【Linux】Linux工具(1)

3.Linux工具(1)

文章目錄

  • 3.Linux工具(1)
      • Linux 軟件包管理器 yum
        • 什么是軟件包
        • 關于 rzsz
        • 查看軟件包——yum list命令
        • 如何安裝軟件
        • 如何卸載軟件
        • 補充——yum如何找到要安裝軟件的下載地址
      • Linux開發工具
        • Linux編輯器-vim使用
          • 1.vim的基本概念
          • 2.vim的基本操作
          • 3.簡單vim配置
      • Linux編譯器-gcc/g++使用
        • 1.背景知識
        • 2.gcc如何完成
          • 預處理(進行宏替換)
          • 編譯(生成匯編)
          • 匯編(生成機器可識別代碼)
          • 連接(生成可執行文件或庫文件)
          • 動態庫
          • 動態庫、動態鏈接、靜態庫與靜態鏈接的對比總結
          • gcc選項

Linux 軟件包管理器 yum

什么是軟件包
  • 在Linux下安裝軟件, 一個通常的辦法是下載到程序的源代碼, 并進行編譯, 得到可執行程序.
  • 但是這樣太麻煩了, 于是有些人把一些常用的軟件提前編譯好, 做成軟件包(可以理解成windows上的安裝程序)放在一個服務器上, 通過包管理器可以很方便的獲取到這個編譯好的軟件包, 直接進行安裝.
  • 軟件包和軟件包管理器, 就好比 “App” 和 “應用商店” 這樣的關系.
  • yum(Yellow dog Updater, Modi?ed)是Linux下非常常用的一種包管理器. 主要應用在Fedora, RedHat,Centos等發行版上.
關于 rzsz

這個工具用于 windows 機器和遠端的 Linux 機器通過 XShell 傳輸文件,安裝完畢之后可以通過拖拽的方式將文件上傳過去.

  • 注意事項
    關于 yum 的所有操作必須保證主機(虛擬機)網絡暢通!!!
    可以通過 ping 指令驗證
查看軟件包——yum list命令

通過 yum list 命令可以羅列出當前一共有哪些軟件包. 由于包的數目可能非常之多, 這里我們需要使用 grep 命令只篩選出我們關注的包. 例如:

[root@hcss-ecs-b735 dir2]# yum list | grep gcc-c++
gcc-c++.x86_64                           4.8.5-44.el7                  @base    
avr-gcc-c++.x86_64                       4.9.2-1.el7                   epel     
gcc-c++-aarch64-linux-gnu.x86_64         4.8.5-16.el7.1                epel     
gcc-c++-alpha-linux-gnu.x86_64           4.8.5-16.el7.1                epel     
gcc-c++-arm-linux-gnu.x86_64             4.8.5-16.el7.1                epel     
gcc-c++-avr32-linux-gnu.x86_64           4.8.5-16.el7.1                epel     
gcc-c++-bfin-linux-gnu.x86_64            4.8.5-16.el7.1                epel     
gcc-c++-c6x-linux-gnu.x86_64             4.8.5-16.el7.1                epel     
gcc-c++-cris-linux-gnu.x86_64            4.8.5-16.el7.1                epel     
gcc-c++-frv-linux-gnu.x86_64             4.8.5-16.el7.1                epel     
gcc-c++-h8300-linux-gnu.x86_64           4.8.5-16.el7.1                epel     
gcc-c++-hppa-linux-gnu.x86_64            4.8.5-16.el7.1                epel     
gcc-c++-hppa64-linux-gnu.x86_64          4.8.5-16.el7.1                epel     
gcc-c++-ia64-linux-gnu.x86_64            4.8.5-16.el7.1                epel     

注意:

  1. 軟件包名稱: 主版本號、次版本號、源程序發行號、軟件包的發行號、主機平臺、cpu架構
  2. x86_64 后綴表示64位系統的安裝包, i686 后綴表示32位系統安裝包. 選擇包時要和系統匹配.
  3. el7 表示操作系統發行版的版本,el7 表示的是 centos7/redhat7. el6 表示 centos6/redhat6.
  4. 最后一列, base 表示的是 “軟件源” 的名稱, 類似于 “小米應用商店”, “華為應用商店” 這樣的概念.
如何安裝軟件

通過 yum, 我們可以通過很簡單的一條命令完成 gcc-c++ 的安裝.

[root@hcss-ecs-b735 dir2]# yum install -y gcc-c++				#主要看這里
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Resolving Dependencies
--> Running transaction check
---> Package gcc-c++.x86_64 0:4.8.5-44.el7 will be installed
--> Processing Dependency: libstdc++-devel = 4.8.5-44.el7 for package: gcc-c++-4.8.5-44.el7.x86_64
--> Running transaction check
---> Package libstdc++-devel.x86_64 0:4.8.5-44.el7 will be installed
--> Finished Dependency ResolutionDependencies Resolved=============================================================================================Package                    Arch              Version                  Repository       Size
=============================================================================================
Installing:gcc-c++                    x86_64            4.8.5-44.el7             base            7.2 M
Installing for dependencies:libstdc++-devel            x86_64            4.8.5-44.el7             base            1.5 MTransaction Summary
=============================================================================================
Install  1 Package (+1 Dependent package)Total download size: 8.7 M
Installed size: 25 M
Downloading packages:
(1/2): libstdc++-devel-4.8.5-44.el7.x86_64.rpm                        | 1.5 MB  00:00:00     
(2/2): gcc-c++-4.8.5-44.el7.x86_64.rpm                                | 7.2 MB  00:00:00     
---------------------------------------------------------------------------------------------
Total                                                         33 MB/s | 8.7 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transactionInstalling : libstdc++-devel-4.8.5-44.el7.x86_64                                       1/2 Installing : gcc-c++-4.8.5-44.el7.x86_64                                               2/2 Verifying  : gcc-c++-4.8.5-44.el7.x86_64                                               1/2 Verifying  : libstdc++-devel-4.8.5-44.el7.x86_64                                       2/2 Installed:gcc-c++.x86_64 0:4.8.5-44.el7                                                              Dependency Installed:libstdc++-devel.x86_64 0:4.8.5-44.el7                                                      Complete!			#主要看這里

yum 會自動找到都有哪些軟件包需要下載, 這時候敲 “y” 確認安裝.(我這里由于使用了-y選項所以不需要再次確認來繼續安裝
出現 “complete” 字樣, 說明安裝完成.

注意事項:

  • 安裝軟件時由于需要向系統目錄中寫入內容, 一般需要 sudo 或者切到 root 賬戶下才能完成.
  • yum安裝軟件只能一個裝完了再裝另一個. 正在yum安裝一個軟件的過程中, 如果再嘗試用yum安裝另外一個軟件, yum會報錯.
    如果 yum 報錯, 請自行百度.
如何卸載軟件

仍然是一條命令:

yum remove [軟件名]
補充——yum如何找到要安裝軟件的下載地址

當我們在使用yum下載軟件的時候我們會發現,我們并不需要向yum提供詳細的軟件下載地址就可以直接通過軟件名下載這個軟件。這是因為yum有相應的配置文件,這個配置文件里面會記錄yum其他軟件有關的下載路徑

[root@hcss-ecs-b735 dir2]# ls /etc/yum.repos.d/
CentOS-Base.repo       CentOS-fasttrack.repo  CentOS-Vault.repo          epel.repo.rpmnew
CentOS-CR.repo         CentOS-Media.repo      CentOS-x86_64-kernel.repo  epel-testing.repo
CentOS-Debuginfo.repo  CentOS-Sources.repo    epel.repo

對于如何切換yum源以及如何對虛擬機上的Linux系統配置yum源,可以在網上進行搜索。在網上找到yum源、直接下載在Linux服務器中的yum源配置文件位置

#!/bin/bash
##  備份 /etc/yum.repos.d/CentOS-Base.repo
sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
##  更換為阿里源
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
##  安裝epel
sudo yum install -y epel-release
##  使用阿里提供的epel源
sudo curl -o /etc/yum.repos.d/epel-7.repo  http://mirrors.aliyun.com/repo/epel-7.repo
##  清空yum緩存
sudo yum clean all
##  重建yum緩存
sudo yum makecache

Linux開發工具

Linux編輯器-vim使用

vim是一個多模式的編輯器,不是編譯器(不能編譯代碼)

1.vim的基本概念

vim有很多種模式但這里只簡要介紹三種最常用的模式,三種模式分別是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能區分如下:

在這里插入圖片描述

  • 正常/普通/命令模式(Normal mode)
    控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入Insert mode下,或者到 last line mode

  • 插入模式(Insert mode)
    只有在Insert mode下,才可以做文字輸入,按「ESC」鍵可回到命令行模式。該模式是我們后面用的最頻繁的編輯模式。

  • 末行模式(last line mode)
    文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。 在命令模式下,shift+: 即可進入該模式。要查看你的所有模式:打開vim,底行模式直接輸入

2.vim的基本操作

vim的操作指令有點多,其實不需要刻意去記憶,用的多了自然就記住了,這里簡單列舉幾個


1. 模式切換

Esc 退出其他模式。(進入正常模式)

[正常模式]切換至[插入模式]

  • i:光標前插入 這個用的最多

  • I:行首插入

  • a:光標后插入

  • A:行尾插入

  • o:下方新建行插入

  • O:上方新建行插入

  • v:字符選擇

  • V:行選擇

  • Ctrl+v:塊選擇

  • [正常模式]切換至[末行模式]
    「shift + ;」, 其實就是輸入「:」


2. 光標移動

  • h ← / j ↓ / k ↑ / l → 這個基本不用,用鍵盤上的上下左右鍵就可以

  • 0:行首 / ^:第一個非空字符

  • $:行尾

  • gg:文件開頭

  • G:文件末尾

  • 5G:5:跳轉到第5行

  • Ctrl+f:向下翻頁 / Ctrl+b:向上翻頁

  • %:跳轉到匹配的括號(如 {}, ()

  • w光標移動到下一個單詞(連續英文字符串)

  • b光標移動到上一個單詞(連續英文字符串)


3. 文本編輯

  • shift + r:進入替換模式,需要用EXC退回正常模式

  • x:刪除光標指向的字符

  • shift + ~:大小寫切換

  • shift + x:刪除光標之前的字符

  • dw:刪除到單詞結尾

  • dd:刪除整行(應該算是一種剪切

  • 3dd:刪除3行

  • d$:刪除到行尾

  • yy:復制當前行

  • 3yy:復制3行

  • p:粘貼到光標后 / P:粘貼到光標前

  • u:撤銷

  • Ctrl+r:重做


4. 搜索與替換

  • /keyword:向下搜索(注意這個ketword是你要找的字符)

  • ?keyword:向上搜索

  • n:下一個匹配 / N:上一個匹配

  • :s/old/new:替換當前行第一個匹配

  • :s/old/new/g:替換當前行所有匹配

  • :%s/old/new/g:替換全文所有匹配

  • :%s/old/new/gc:替換時逐個確認


5. 保存與退出

  • :w:保存
  • :q:退出
  • :wq:x:保存并退出
  • :q!:強制退出(不保存)
  • :w!:強制寫入
  • wq!:強制保存并退出
  • ZZ(Shift+z+z):快速保存退出

6. 分屏與標簽頁

  • :sp [file]:水平分屏

  • :vsp [file]:垂直分屏

  • Ctrl+w + 方向鍵:切換分屏

  • :tabnew:新建標簽頁

  • gt:下一個標簽 / gT:上一個標簽


7. 其他實用命令

  • >>:當前行右縮進 / <<:左縮進

  • gg=G:自動縮進全文(適合代碼)

  • :set number:set nu):顯示行號

  • :set nowrap:禁止自動換行

  • :help [command]:查看幫助(如 :help :w

8. 可視模式操作

  • 選中文本后:
    • y:復制選中內容
    • d:刪除選中內容
    • >:向右縮進 / <:向左縮進
    • 塊模式下按 I 插入內容,按 Esc 應用到所有

9.在vim中編譯、執行代碼

  • :!gcc :與之前的gcc 用法是一樣的

  • :./[可執行文件名]:執行當前文件夾中的可執行文件

  • :!可以執行命令行命令,路徑為當前vim打開的文件路徑

  • vs + 其他文件名:打開其他文件支持分屏操作

3.簡單vim配置

在網上有許多教我們如何配置vim的教程,我這里就用一個比較簡單的方式來進行配置。

  • 安裝方法

在 shell 中執行指令(想在哪個用戶下讓vim配置生效, 就在哪個用戶下執行這個指令. 強烈 “不推薦” 直接在 root 下執行):

curl -sLf https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh -o ./install.sh && bash ./install.sh

需要按照提示輸入 root 密碼. 您的 root 密碼不會被上傳, 請放心輸入.

  • 卸載方法

在安裝了 VimForCpp 的用戶下執行:

bash ~/.VimForCpp/uninstall.sh

Linux編譯器-gcc/g++使用

1.背景知識

預處理(進行宏替換)
編譯(生成匯編)
匯編(生成機器可識別代碼)
連接(生成可執行文件或庫文件)

這個內容在C語言學習的時候就已經了解過了,可以去搜索一下

2.gcc如何完成

格式:gcc [選項] 要編譯的文件 [選項] [目標文件]

預處理(進行宏替換)

預處理功能主要包括宏定義,文件包含,條件編譯,去注釋等。預處理指令是以#號開頭的代碼行。

實例:gcc –E hello.c –o hello.i

選項“-E”,該選項的作用是讓 gcc 在預處理結束后停止編譯過程。選項“-o”是指目標文件,“.i”文件為已經過預處理的C原始程序。

編譯(生成匯編)

在這個階段中,gcc 首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤后,gcc 把代碼翻譯成匯編語言。
用戶可以使用“-S”選項來進行查看,該選項只進行編譯而不進行匯編,生成匯編代碼。

實例:gcc –S hello.i –o hello.s

匯編(生成機器可識別代碼)

匯編階段是把編譯階段生成的“.s”文件轉成目標文件

可使用選項“-c”就可看到匯編代碼已轉化為“.o”的二進制目標代碼了

實例:gcc -c code.s -o code.o

連接(生成可執行文件或庫文件)

在成功編譯之后,就進入了鏈接階段。

實例:gcc hello.o -o hello

動態庫

在這里涉及到一個重要的概念:函數庫。我們的C程序中,并沒有定義“printf”的函數實現,且在預編譯中包含的“stdio.h”中也只有該函數的聲明,而沒有定義函數的實現,那么,是在哪里實“printf”函數的呢?

最后的答案是:系統把這些函數實現都被做到名為 libc.so.6 的庫文件中去了,在沒有特別指定時,gcc 會到系統默認的搜索路徑“/usr/lib”下進行查找,也就是鏈接到 libc.so.6 庫函數中去,這樣就能實現函數“printf”了,而這也就是鏈接的作用

函數庫一般分為靜態庫和動態庫兩種

  • 靜態庫是指編譯鏈接時,把庫文件的代碼全部加入到可執行文件中,因此生成的文件比較大,但在運行時也就不再需要庫文件了。其后綴名一般為“.a”。在Windows版本中的動態庫是.lib結尾的文件

  • 把碼加入到可執行文件中,而是在程序執行時由運行時鏈接文件加載庫,這樣可以節省系統的開銷。動態庫一般后綴名為“.so”,如前面所述的 libc.so.6 就是動態庫。gcc 在編譯時默認使用動態庫。完成了鏈接之后,gcc 就可以生成可執行文件,如gcc hello.o -o hello。還有一個可以提一點的是,在Windows版本中的動態庫是.dll結尾的文件

  • gcc默認生成的二進制程序,是動態鏈接的,這點可以通過 命令驗證。

動態庫、動態鏈接、靜態庫與靜態鏈接的對比總結

1. 定義

概念說明
動態庫運行時加載的共享庫(如 .dll.so),不嵌入程序,可被多個進程共享。
動態鏈接在程序運行時將動態庫綁定到進程的過程(自動加載或手動 dlopen)。
靜態庫編譯時嵌入程序的庫(如 .lib.a),代碼直接合并到可執行文件中。
靜態鏈接在程序編譯時將靜態庫代碼復制到可執行文件中,生成獨立文件。

2. 特點

特性動態庫/動態鏈接靜態庫/靜態鏈接
文件大小程序體積小(僅自身代碼)程序體積大(包含所有依賴庫代碼)
內存占用低(多個程序共享同一庫)高(每個程序獨立加載庫代碼)
更新維護替換庫文件即可生效需重新編譯程序
依賴管理需處理庫版本沖突(依賴地獄)無外部依賴,獨立運行
加載時機運行時加載(延遲綁定)編譯時嵌入
適用場景通用軟件、系統級程序(如 glibc嵌入式系統、獨立工具(如 busybox

3. 優缺點對比

動態庫與動態鏈接

  • 優點
    • 節省內存和磁盤空間(共享性)。
    • 支持熱更新(無需重新編譯程序)。
    • 靈活加載(如插件系統)。
  • 缺點
    • 依賴外部環境(庫缺失或版本沖突會導致程序崩潰)。
    • 首次調用函數時可能有解析延遲(PLT/GOT 機制)。

靜態庫與靜態鏈接

  • 優點
    • 程序獨立,無需外部依賴。
    • 啟動速度快(無運行時加載開銷)。
    • 避免依賴地獄。
  • 缺點
    • 文件體積大(代碼冗余)。
    • 更新需重新編譯分發。
    • 內存占用高(多進程無法共享庫代碼)。

6. 總結

  • 動態庫與動態鏈接
    通過共享代碼按需加載優化資源利用,適合通用軟件和靈活擴展,但需管理依賴和版本。
  • 靜態庫與靜態鏈接
    空間換獨立性,適合對部署環境要求嚴格的場景(如嵌入式系統),但犧牲了更新便利性。

注意:

  • 在操作系統中一般默認使用的是動態鏈接,但我們在編譯的時候可以指定用靜態鏈接,也就是下面gcc的-static選項
  • 我們可以用file命令查看一個程序的詳細信息,包括它是靜態鏈接和動態鏈接
  • 云服務器可能沒有安裝靜態庫,去搜索安裝
gcc選項

-E 只激活預處理,這個不生成文件,你需要把它重定向到一個輸出文件里面
-S 編譯到匯編語言不進行匯編和鏈接
-c 編譯到目標代碼
-o 文件輸出到 文件
-static 此選項對生成的文件采用靜態鏈接
-g 生成調試信息。GNU 調試器可利用該信息。
-shared 此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫.
-O0
-O1
-O2
-O3 編譯器的優化選項的4個級別,-O0表示沒有優化,-O1為缺省值,-O3優化級別最高-w 不生成任何警告信息。
-Wall 生成所有警告信息。

gcc選項記憶

esc,iso例子。我們一般用的時候都是直接將C語言文件通過gcc hello.c -o hello 直接編譯成可執行文件。不需要逐步生成各種中間文件。

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

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

相關文章

springboot項目tomcat中加載不了

Spring Boot項目在Tomcat中加載不了的問題可能由多種原因引起&#xff0c;包括打包方式不正確、依賴配置錯誤、啟動類配置不當等。以下是詳細的解決方案&#xff1a; 1. 修改項目打包形式 將項目打包形式從jar改為war&#xff0c;以確保項目以正確的格式被Tomcat加載。在pom.…

Matlab 數控車床進給系統的建模與仿真

1、內容簡介 Matlab217-數控車床進給系統的建模與仿真 可以交流、咨詢、答疑 2、內容說明 略 摘 要:為提高數控車床的加工精度,對數控 車床進給系統中影響加工精度的主要因素進行了仿真分析研 動系統的數學模型,利用MATLAB軟件中的動態仿真工具 究:依據機械動力學原理建立了…

Python Cookbook-7.8 使用 Berkeley DB 數據庫

任務 你想將一些數據做持久化處理&#xff0c;而且也想體驗一下BerkeleyDB數據庫的簡潔和高效。 解決方案 如果以前在你的計算機中安裝過 BerkeleyDB&#xff0c;Python標準庫附帶的bsddb包(以及可選的 bsddb3&#xff0c;用于訪間Berkeley DBrelease 3.2數據庫)可以被用來作…

QT6 源(82):閱讀與注釋日歷類型 QCalendar,本類并未完結,儒略歷,格里高利歷原來就是公歷,

&#xff08;1&#xff09;本代碼來自于頭文件 qcalendar . h &#xff1a; #ifndef QCALENDAR_H #define QCALENDAR_H#include <limits>#include <QtCore/qglobal.h> #include <QtCore/qlocale.h> #include <QtCore/qstring.h> #include <QtCore/…

【C/C++】字符函數和字符串函數

文章目錄 前言字符函數和字符串函數1.字符分類函數2.字符轉換函數3.strlen的使用和模擬實現3.1 代碼演示3.2 strlen返回值3.3 strlen的模擬實現 4.strcpy的使用和模擬實現4.1 代碼演示4.2 模擬實現 5.strcat的使用和模擬實現5.1 代碼演示5.2 模擬實現 6.strcmp的使用和模擬實現…

Spark-core-RDD入門

RDD基本概念 Resilient Distributed Dataset 叫做彈性分布式數據集&#xff0c;是Spark中最基本的數據抽象&#xff0c;是分布式計算的實現載體&#xff0c;代表一個不可變&#xff0c;可分區&#xff0c;里面的元素并行計算的集合。 - Dataset&#xff1a; 一個數據集合&…

緩存套餐-01.Spring Cache介紹和常用注解

一.Spring Cache 要使用直接導入坐標即可。 如何選擇底層的緩存實現呢&#xff1f;只要導入對應的緩存坐標即可。如果要使用redis作為緩存實現&#xff0c;那么只需要導入redis的maven坐標。 二.常用注解 Cacheable&#xff1a;不光往緩存中寫緩存數據&#xff0c;而且會從緩…

STM32智能空氣凈化器項目開發

一、項目概述 本空氣凈化器項目基于STM32F4系列微控制器&#xff0c;整合多傳感器數據采集、環境參數顯示、網絡通信及執行機構控制等功能&#xff0c;實現智能化空氣質量管理。項目采用FreeRTOS實時操作系統進行多任務調度&#xff0c;結合TFT觸摸屏實現人機交互&#xff0c;…

[數據處理] 6. 數據可視化

&#x1f44b; 你好&#xff01;這里有實用干貨與深度分享?? 若有幫助&#xff0c;歡迎&#xff1a;? &#x1f44d; 點贊 | ? 收藏 | &#x1f4ac; 評論 | ? 關注 &#xff0c;解鎖更多精彩&#xff01;? &#x1f4c1; 收藏專欄即可第一時間獲取最新推送&#x1f514;…

嵌入式學習筆記 - STM32 SRAM控制器FSMC

一 SRAM控制器內部結構圖&#xff1a; 以下以512K SRAM芯片為例 二 SRAM地址矩陣/尋址方式&#xff1a; SRAM的地址尋址方式通過行地址與列地址交互的方式存儲數據 三 STM32 地址映射 從STM32的地址映射中可以看出&#xff0c;FSMC控制器支持擴展4塊外部存儲器區域&#xff0…

python基礎:序列和索引-->Python的特殊屬性

一.序列和索引 1.1 用索引檢索字符串中的元素 # 正向遞增 shelloworld for i in range (0,len(s)):# i是索引print(i,s[i],end\t\t) print(\n--------------------------) # 反向遞減 for i in range (-10,0):print(i,s[i],end\t\t)print(\n--------------------------) print(…

phpstudy升級新版apache

1.首先下載要升級到的apache版本&#xff0c;這里apache版本為Apache 2.4.63-250207 Win64下載地址&#xff1a;Apache VS17 binaries and modules download 2.將phpstudy中原始apache復制備份Apache2.4.39_origin 3.將1中下載apache解壓&#xff0c; 將Apache24復制一份到ph…

開源業務流程:jBPM

一、什么是 jBPM&#xff1f; jBPM 是一個靈活的業務流程管理 (BPM) 套件。它不僅僅是一個流程引擎&#xff0c;而是一個集成了多種功能的平臺&#xff0c;旨在幫助企業建模、自動化和監控業務流程。jBPM 遵循業界標準&#xff0c;特別是 BPMN 2.0&#xff08;業務流程模型和標…

JAVA:使用 JMH 進行基準測試的技術指南

1、簡述 在性能優化中,寫高效代碼離不開準確的基準測試。而 Java 的 JIT 編譯器會對代碼進行優化(如方法內聯、死代碼消除等),導致簡單的測試方法可能得不到真實的性能數據。這時候,JMH(Java Microbenchmark Harness)就派上用場了。 JMH 是 Java 官方提供的基準測試框…

Thinkphp開發自適應職業學生證書查詢系統職業資格等級會員證書管理網站

環境&#xff1a;php7.2mysql5.7think偽靜態 1.上傳壓縮包到服務器解壓 2.還原數據庫 3.配置數據庫信息application/database.php 4.后臺&#xff1a;http://你的域名/abc.php 用戶&#xff1a;admin 密碼&#xff1a;123456 程序說明&#xff1a; 【修復版】Thinkphp5開發的自…

(二)毛子整潔架構(CQRS/Dapper/領域事件處理器/垂直切片)

文章目錄 項目地址一、Application 層1.1 定義CQRS的接口以及其他服務1. Command2. IQuery查詢3. 當前時間服務接口4. 郵件發送服務接口 1.2 ReserveBooking Command1. 處理傳入的參數2. ReserveBookingCommandHandler3. BookingReservedDomainEvent 1.3 Query使用Sql查詢1. 創…

詳解Redis

一.Redis的基本概念 首先&#xff0c;什么是Redis&#xff1f; Redis&#xff08;Remote Dictionary Server&#xff09;是一個開源的、高性能的鍵值對內存數據庫&#xff0c;常被用作緩存、消息隊列、分布式鎖等。 二.Redis的基本數據類型 1. 字符串&#xff08;String&am…

智慧醫院的可視化變革:可視化工具助力數字化轉型

在科技飛速發展的當下&#xff0c;智慧醫院已從概念逐步落地&#xff0c;深刻改變著傳統醫療模式。它借助互聯網、數字孿生及人工智能等前沿技術&#xff0c;在醫療服務領域掀起革新&#xff0c;涵蓋面向醫務人員的“智慧醫療”、面向患者的“智慧服務”以及面向醫院的“智慧管…

Ubuntu Linux系統配置賬號無密碼sudo

在Linux系統中&#xff0c;配置無密碼sudo可以通過修改sudoers文件來實現。以下是具體的配置步驟 一、編輯sudoers文件 輸入sudo visudo命令來編輯sudo的配置文件。visudo是一個專門用于編輯sudoers文件的命令&#xff0c;它會在保存前檢查語法錯誤&#xff0c;從而防止可能的…

graphviz和dot繪制流程圖

graphviz和dot繪制流程圖 指令 1.寫后端需求文檔 2.用中文輸出結果 3.必須詳細全面 4.必須搭配相關流程圖step1:下載graphviz&#xff0c;https://graphviz.org/download/ step2&#xff1a;安裝&#xff0c;記得添加環境變量 step3&#xff1a;驗證是否安裝成功 dot --versio…