【Linux】Linux環境基礎開發工具

前言

本篇博客我們來了解Linux環境下一些基礎開發工具

💓 個人主頁:zkf&

? 文章專欄:Linux

若有問題 評論區見📝

🎉歡迎大家點贊👍收藏?文章

?

?

目錄

1.Linux 軟件包管理器 yum

2.Linux開發工具

2.1Linux編輯器-vim使用

2.1.1vim的基本概念

2.1.2vim的基本操作

2.1.3vim正常模式命令集

vim末行模式命令集

2.1.4vim操作總結

2.1.5vim簡單配置

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

2.3Linux調試器-gdb使用

2.4Linux項目自動化構建工具-make/Makefile

3.使用 git 命令行

?


1.Linux 軟件包管理器 yum

什么是軟件包

Linux 下安裝軟件 , 一個通常的辦法是下載到程序的源代碼 , 并進行編譯 , 得到可執行程序 .
但是這樣太麻煩了 , 于是有些人把一些常用的軟件提前編譯好 , 做成軟件包 ( 可以理解成 windows 上的安裝程序) 放在一個服務器上 , 通過包管理器可以很方便的獲取到這個編譯好的軟件包 , 直接進行安裝 .
軟件包和軟件包管理器 , 就好比 "App" " 應用商店 " 這樣的關系 .
yum(Yellow dog Updater, Modified) Linux 下非常常用的一種包管理器 . 主要應用在 Fedora, RedHat, Centos等發行版上 .
關于 rzsz
這個工具用于 windows 機器和遠端的 Linux 機器通過 XShell 傳輸文件 .
安裝完畢之后可以通過拖拽的方式將文件上傳過去 .
注意事項
關于 yum 的所有操作必須保證主機 ( 虛擬機 ) 網絡暢通 !!!
可以通過 ping 指令驗證
ping www.baidu.com
查看軟件包
通過 yum list 命令可以羅列出當前一共有哪些軟件包 . 由于包的數目可能非常之多 , 這里我們需要使用 grep 命令只
篩選出我們關注的包 . 例如 :
yum list | grep lrzsz

結果如下:

lrzsz.x86_64 0.12.20-36.el7 @base?

注意事項 :
軟件包名稱 : 主版本號 . 次版本號 . 源程序發行號 - 軟件包的發行號 . 主機平臺 .cpu 架構 .
"x86_64" 后綴表示 64 位系統的安裝包 , "i686" 后綴表示 32 位系統安裝包 . 選擇包時要和系統匹配 .
"el7" 表示操作系統發行版的版本 . "el7" 表示的是 centos7/redhat7. "el6" 表示 centos6/redhat6.
最后一列 , base 表示的是 " 軟件源 " 的名稱 , 類似于 " 小米應用商店 ", " 華為應用商店 " 這樣的概念 .
如何安裝軟件
通過 yum, 我們可以通過很簡單的一條命令完成 gcc 的安裝 .
sudo yum install lrzsz
yum 會自動找到都有哪些軟件包需要下載 , 這時候敲 "y" 確認安裝 .
出現 "complete" 字樣 , 說明安裝完成
注意事項 :
安裝軟件時由于需要向系統目錄中寫入內容 , 一般需要 sudo 或者切到 root 賬戶下才能完成 .
yum 安裝軟件只能一個裝完了再裝另一個 . 正在 yum 安裝一個軟件的過程中 , 如果再嘗試用 yum 安裝另外一個軟件, yum 會報錯 .
如果 yum 報錯 , 請自行百度
如何卸載軟件
仍然是一條命令
sudo yum remove lrzsz

2.Linux開發工具

?

2.1Linux編輯器-vim使用

vi/vim 的區別簡單點來說,它們都是多模式編輯器,不同的是 vim vi 的升級版本,它不僅兼容 vi 的所有指令,而且還有一些新的特性在里面。例如語法加亮,可視化操作不僅可以在終端運行,也可以運行于x window mac os 、windows。

?

?

2.1.1vim的基本概念

課堂上我們講解 vim 的三種模式 ( 其實有好多模式,目前掌握這 3 種即可 ), 分別是命令模式( command mode )、插入模式(Insert mode )和底行模式( last line mode ),各模式的功能區分如下:
正常 / 普通 / 命令模式 (Normal mode)
控制屏幕光標的移動,字符、字或行的刪除,移動復制某區段及進入 Insert mode 下,或者到 last line mode
插入模式 (Insert mode)
只有在 Insert mode 下,才可以做文字輸入,按「 ESC 」鍵可回到命令行模式。該模式是我們后面用的最頻繁
的編輯模式。
末行模式 (last line mode)
文件保存或退出,也可以進行文件替換,找字符串,列出行號等操作。 在命令模式下, shift+: 即可進入該模
式。要查看你的所有模式:打開 vim ,底行模式直接輸入
:help vim-modes
我這里一共有 12 種模式 :six BASIC modes six ADDITIONAL modes.

2.1.2vim的基本操作

進入 vim, 在系統提示符號輸入 vim 及文件名稱后,就進入 vim 全屏幕編輯畫面 :
$ vim test.c
不過有一點要特別注意,就是你進入 vim 之后,是處于 [ 正常模式 ] ,你要切換到 [ 插入模式 ] 才能夠輸入文字。
[ 正常模式 ] 切換至 [ 插入模式 ]
輸入 a
輸入 i
輸入 o
[ 插入模式 ] 切換至 [ 正常模式 ]
目前處于 [ 插入模式 ] ,就只能一直輸入文字,如果發現輸錯了字 , 想用光標鍵往回移動,將該字刪除,可以先按一下「ESC 」鍵轉到 [ 正常模式 ] 再刪除文字。當然,也可以直接刪除。
[ 正常模式 ] 切換至 [ 末行模式 ]
shift + ; , 其實就是輸入「 :
退出 vim 及保存文件 , [ 正常模式 ] 下,按一下「 : 」冒號鍵進入「 Last line mode , 例如 :
: w (保存當前文件)
: wq ( 輸入「 wq , 存盤并退出 vim)
: q! ( 輸入 q!, 不存盤強制退出 vim)

2.1.3vim正常模式命令集

插入模式
按「 i 」切換進入插入模式「 insert mode 」,按 “i” 進入插入模式后是從光標當前位置開始輸入文件;
按「 a 」進入插入模式后,是從目前光標所在位置的下一個位置開始輸入文字;
按「 o 」進入插入模式后,是插入新的一行,從行首開始輸入文字。
從插入模式切換為命令模式
按「 ESC 」鍵。
移動光標
vim 可以直接用鍵盤上的光標來上下左右移動,但正規的 vim 是用小寫英文字母「 h 」、「 j 」、「 k 」、「l 」,分別控制光標左、下、上、右移一格
按「 G 」:移動到文章的最后
按「 $ 」:移動到光標所在行的 行尾
按「 ^ 」:移動到光標所在行的 行首
按「 w 」:光標跳到下個字的開頭
按「 e 」:光標跳到下個字的字尾
按「 b 」:光標回到上個字的開頭
按「 #l 」:光標移到該行的第 # 個位置,如: 5l,56l
按[ gg ]:進入到文本開始
按[ shift g ]:進入文本末端
按「 ctrl + b 」:屏幕往 移動一頁
按「 ctrl + f 」:屏幕往 移動一頁
按「 ctrl + u 」:屏幕往 移動半頁
按「 ctrl + d 」:屏幕往 移動半頁
刪除文字
x 」:每按一次,刪除光標所在位置的一個字符
#x 」:例如,「 6x 」表示刪除光標所在位置的 后面(包含自己在內) ”6 個字符
X 」:大寫的 X ,每按一次,刪除光標所在位置的 前面 一個字符
#X 」:例如,「 20X 」表示刪除光標所在位置的 前面 ”20 個字符
dd 」:刪除光標所在行
#dd 」:從光標所在行開始刪除 #
復制
yw 」:將光標所在之處到字尾的字符復制到緩沖區中。
#yw 」:復制 # 個字到緩沖區
yy 」:復制光標所在行到緩沖區。
#yy 」:例如,「 6yy 」表示拷貝從光標所在的該行 往下數 ”6 行文字。
p 」:將緩沖區內的字符貼到光標所在位置。注意:所有與 “y” 有關的復制命令都必須與 “p” 配合才能完成復制與粘貼功能。
替換
r 」:替換光標所在處的字符。
R 」:替換光標所到之處的字符,直到按下「 ESC 」鍵為止。
撤銷上一次操作
「u 」:如果您誤執行一個命令,可以馬上按下「 u 」,回到上一個操作。按多次 “u” 可以執行多次回復。
ctrl + r : 撤銷的恢復
更改
cw 」:更改光標所在處的字到字尾處
c#w 」:例如,「 c3w 」表示更改 3 個字
跳至指定的行
ctrl + g 」列出光標所在行的行號。
#G 」:例如,「 15G 」,表示移動光標至文章的第 15 行行首。

vim末行模式命令集

在使用末行模式之前,請記住先按「 ESC 」鍵確定您已經處于正常模式,再按「:」冒號即可進入末行模式。
列出行號
set nu : 輸入「 set nu 」后,會在文件中的每一行前面列出行號。
跳到文件中的某一行
# : # 」號表示一個數字,在冒號后輸入一個數字,再按回車鍵就會跳到該行了,如輸入數字 15 ,再回車,就會跳到文章的第15 行。
查找字符
/ 關鍵字」 : 先按「 / 」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n 」會往后尋找到您要的關鍵字為止。
? 關鍵字」:先按「 ? 」鍵,再輸入您想尋找的字符,如果第一次找的關鍵字不是您想要的,可以一直按「n 」會往前尋找到您要的關鍵字為止。
問題:/ 和 ?查找有和區別?操作實驗一下
保存文件
w : 在冒號輸入字母「 w 」就可以將文件保存起來
離開 vim
q 」:按「 q 」就是退出,如果無法離開 vim ,可以在「 q 」后跟一個「 ! 」強制離開 vim
wq 」:一般建議離開時,搭配「 w 」一起使用,這樣在退出的時候還可以保存文件。

2.1.4vim操作總結

三種模式
正常模式
插入模式
底行模式
我們一共有 12 種總模式,大家下來可以研究一下 vim 操作
打開,關閉,查看,查詢,插入,刪除,替換,撤銷,復制等等操作。

2.1.5vim簡單配置

配置文件的位置
在目錄 /etc/ 下面,有個名為 vimrc 的文件,這是系統中公共的 vim 配置文件,對所有用戶都有效。
而在每個用戶的主目錄下,都可以自己建立私有的配置文件,命名為: “.vimrc” 。例如, /root 目錄下,通常已經存在一個.vimrc 文件 , 如果不存在,則創建之。 切換用戶成為自己執行 su ,進入自己的主工作目錄 , 執行 cd ~ 打開自己目錄下的.vimrc 文件,執行 vim .vimrc
常用配置選項 , 用來測試
設置語法高亮 : syntax on
顯示行號 : set nu
設置縮進的空格數為 4: set shiftwidth=4
使用插件
要配置好看的 vim ,原生的配置可能功能不全,可以選擇安裝插件來完善配置,保證用戶是你要配置的用戶,接下來:
安裝 TagList 插件 , 下載 taglist_xx.zip , 解壓完成,將解壓出來的 doc 的內容放到~ /.vim/doc,? 將解壓出來的plugin 下的內容拷貝到~ /.vim/plugin
在~ /.vimrc 中添加 : let Tlist_Show_One_File=1 let Tlist_Exit_OnlyWindow=1 let
Tlist_Use_Right_Window=1
安裝文件瀏覽器和窗口管理器插件 : WinManager
下載 winmanager.zip 2.X 版本以上的
解壓 winmanager.zip ,將解壓出來的 doc 的內容放到~ /.vim/doc,? 將解壓出來的 plugin 下的內容拷貝到 ~/.vim/plugin
在~ /.vimrc 中添加 let g:winManagerWindowLayout=‘FileExplorer|TagList nmap wm: WMToggle<cr>
然后重啟 vim, 打開 ~/XXX.c 或~ /XXX.cpp, normal 狀態下輸入 "wm", 你將看到上圖的效果。

?

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

1. 背景知識
1. 預處理(進行宏替換 )
2. 編譯(生成匯編 )
3. 匯編(生成機器可識別代碼)
4. 連接(生成可執行文件或庫文件 )
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 hello.s –o hello.o
連接(生成可執行文件或庫文件)
在成功編譯之后 , 就進入了鏈接階段。
實例 : gcc hello.o –o hello
在這里涉及到一個重要的概念 : 函數庫
我們的 C 程序中,并沒有定義 “printf” 的函數實現 , 且在預編譯中包含的 “stdio.h” 中也只有該函數的聲明 , 而沒有定義函數的實現, 那么 , 是在哪里實 “printf” 函數的呢 ?
最后的答案是 : 系統把這些函數實現都被做到名為 libc.so.6 的庫文件中去了 , 在沒有特別指定時 ,gcc 會到系統默認的搜索路徑“/usr/lib” 下進行查找 , 也就是鏈接到 libc.so.6 庫函數中去 , 這樣就能實現函
“printf” , 而這也就是鏈接的作用
函數庫一般分為靜態庫和動態庫兩種。 靜態庫是指編譯鏈接時 , 把庫文件的代碼全部加入到可執行文件中 , 因此生成的文件比較大 , 但在運行時也就不再需要庫文件了。其后綴名一般為“.a”
動態庫與之相反 , 在編譯鏈接時并沒有把庫文件的代碼加入到可執行文件中 , 而是在程序執行時由運行時鏈接文件加載庫, 這樣可以節省系統的開銷。動態庫一般后綴名為 “.so”, 如前面所述的 libc.so.6 就是動態庫。gcc 在編譯時默認使用動態庫。完成了鏈接之后 ,gcc 就可以生成可執行文件 , 如下所示。 gcc hello.o –o hello
gcc默認生成的二進制程序,是動態鏈接的,這點可以通過 file 命令驗證。
gcc 選項
-E 只激活預處理 , 這個不生成文件 , 你需要把它重定向到一個輸出文件里面
-S? 編譯到匯編語言不進行匯編和鏈接
-c? 編譯到目標代碼
-o 文件輸出到 文件
-static 此選項對生成的文件采用靜態鏈接
-g? 生成調試信息。 GNU 調試器可利用該信息。
-shared? 此選項將盡量使用動態庫,所以生成文件比較小,但是需要系統由動態庫 .
-O0
-O1
-O2
-O3 編譯器的優化選項的 4 個級別, -O0 表示沒有優化 ,-O1 為缺省值, -O3 優化級別最高
-w? 不生成任何警告信息。
-Wall 生成所有警告信息。
gcc 選項記憶
esc,iso 例子

2.3Linux調試器-gdb使用

1. 背景
程序的發布方式有兩種, debug 模式和 release 模式
Linux gcc/g++ 出來的二進制程序,默認是 release 模式
要使用 gdb 調試,必須在源代碼生成二進制程序的時候 , 加上 - g 選項
2. 開始使用
gdb binFile 退出: ctrl + d quit 調試命令:
list l 行號:顯示 binFile 源代碼,接著上次的位置往下列,每次列 10 行。
list l 函數名:列出某個函數的源代碼。
r run :運行程序。
n next :單條執行。
s step :進入函數調用
break(b)? 行號:在某一行設置斷點
break? 函數名:在某個函數開頭設置斷點
info break :查看斷點信息。
finish :執行到當前函數返回,然后挺下來等待命令
print(p) :打印表達式的值,通過表達式可以修改變量的值或者調用函數 p 變量:打印變量值。
set?var :修改變量的值
continue( c) :從當前位置開始連續而非單步執行程序
run( r) :從開始連續而非單步執行程序
delete?breakpoints :刪除所有斷點
delete?breakpoints?n :刪除序號為 n 的斷點
disable?breakpoints :禁用斷點
enable?breakpoints :啟用斷點
info( i)?breakpoints :參看當前設置了哪些斷點
display? 變量名:跟蹤查看一個變量,每次停下來都顯示它的值
undisplay :取消對先前設置的那些變量的跟蹤
until X 行號:跳至 X
breaktrace( bt) :查看各級函數調用及參數
info i)?locals :查看當前棧幀局部變量的值
quit :退出 gdb
3. 理解
windows IDE 對應例子

2.4Linux項目自動化構建工具-make/Makefile

背景
會不會寫 makefile ,從一個側面說明了一個人是否具備完成大型工程的能力
一個工程中的源文件不計數,其按類型、功能、模塊分別放在若干個目錄中, makefile 定義了一系列的規則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作makefile帶來的好處就是 ——“ 自動化編譯 ,一旦寫好,只需要一個 make 命令,整個工程完全自動編譯,極大的提高了軟件開發的效率。
make 是一個命令工具,是一個解釋 makefile 中指令的命令工具,一般來說,大多數的 IDE 都有這個命令,比如:Delphi make Visual C++ nmake Linux GNU make 。可見, makefile 都成為了一種在工程方面的編譯方法。make是一條命令, makefile 是一個文件,兩個搭配使用,完成項目自動化構建。
理解
依賴例子
實例代碼

C代碼

#include <stdio.h>
int main()
{
printf("hello Makefile!\n");
return 0;
}
Makefile 文件 hello:hello.o gcc hello.o -o hello hello.o:hello.s gcc -c hello.s -o hello.o hello.s:hello.i gcc -S hello.i -o hello.s hello.i:hello.c gcc -E hello.c -o hello.i
.PHONY:clean
clean:
rm -f hello.i hello.s hello.o hello
依賴關系
上面的文件 hello , 它依賴 hell.o
hello.o , 它依賴 hello.s
hello.s , 它依賴 hello.i
hello.i , 它依賴 hello.c
依賴方法
gcc hello.* - option hello.* , 就是與之對應的依賴關系
原理
make 是如何工作的 , 在默認的方式下,也就是我們只輸入 make 命令。那么,
1. make 會在當前目錄下找名字叫 “Makefile” “makefile” 的文件。
2. 如果找到,它會找文件中的第一個目標文件( target ),在上面的例子中,他會找到 “hello” 這個文件,并把這個文件作為最終的目標文件。
3. 如果 hello 文件不存在,或是 hello 所依賴的后面的 hello.o 文件的文件修改時間要比 hello 這個文件新(可以用 touch 測試),那么,他就會執行后面所定義的命令來生成 hello 這個文件。
4. 如果 hello 所依賴的 hello.o 文件不存在,那么 make 會在當前文件中找目標為 hello.o 文件的依賴性,如果找到則再根據那一個規則生成hello.o 文件。(這有點像一個堆棧的過程)
5. 當然,你的 C 文件和 H 文件是存在的啦,于是 make 會生成 hello.o 文件,然后再用 hello.o 文件聲明make的終極任務,也就是執行文件 hello 了。
6. 這就是整個 make 的依賴性, make 會一層又一層地去找文件的依賴關系,直到最終編譯出第一個目標文件。
7. 在找尋的過程中,如果出現錯誤,比如最后被依賴的文件找不到,那么 make 就會直接退出,并報錯,而對于所定義的命令的錯誤,或是編譯不成功,make 根本不理。
8. make 只管文件的依賴性,即,如果在我找了依賴關系之后,冒號后面的文件還是不在,那么對不起, 我就不工作啦。
項目清理
工程是需要被清理的
clean 這種,沒有被第一個目標文件直接或間接關聯,那么它后面所定義的命令將不會被自動執行,不過,我們可以顯示要make 執行。即命令 ——“make clean” ,以此來清除所有的目標文件,以便重編譯。
但是一般我們這種 clean 的目標文件,我們將它設置為偽目標 , .PHONY 修飾 , 偽目標的特性是,總是被執行的。
可以將我們的 hello 目標文件聲明成偽目標,測試一下。

3.使用 git 命令行

安裝 git

yum install git?

Github 創建項目
使用 Github 創建項目
注冊賬號
這個比較簡單 , 參考著官網提示即可 . 需要進行郵箱校驗
創建項目
1. 登陸成功后 , 進入個人主頁 , 點擊左下方的 New repository 按鈕新建項目

?

2. 然后跳轉到的新頁面中輸入項目名稱 ( 注意 , 名稱不能重復 , 系統會自動校驗 . 校驗過程可能會花費幾秒鐘 ). 校驗完畢后, 點擊下方的 Create repository 按鈕確認創建

?

3. 在創建好的項目頁面中復制項目的鏈接, 以備接下來進行下載?

?

下載項目到本地
創建好一個放置代碼的目錄 .
git clone [url]
這里的 url 就是剛剛建立好的 項目 的鏈接 .
三板斧第一招 : git add
將代碼放到剛才下載好的目錄中

?git add [文件名]

將需要用 git 管理的文件告知 git

三板斧第二招: git commit

提交改動到本地

git commit .?

最后的 "." 表示當前目錄 ?
提交的時候應該注明提交日志 , 描述改動的詳細內容 .

三板斧第三招: git push

同步到遠端服務器上

git push?

需要填入用戶名密碼. 同步成功后, 刷新 Github 頁面就能看到代碼改動了?

?


結束語?

Linux基礎工具介紹到這里,下篇博客我們就來看看Linux操作系統中進程的含義

OK,感謝觀看!!

?

?

?

?

?

?

?

?

?

?

?

?

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

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

相關文章

vue2開發者sass預處理注意

vue2開發者sass預處理注意 sass的預處理器&#xff0c;早年使用node-sass&#xff0c;也就是vue2最初默認的編譯器。 sass官方推出了dart-sass來替代。 node-sass已經停維很久了。 vue3默認使用的是dart-sass。 Uniapp的官方文檔截圖 從 HBuilderX 4.56 &#xff0c;vue2 …

Spring MVC Controller 方法的返回類型有哪些?

Spring MVC Controller 方法的返回類型非常靈活&#xff0c;可以根據不同的需求返回多種類型的值。Spring MVC 會根據返回值的類型和相關的注解來決定如何處理響應。 以下是一些常見的 Controller 方法返回類型&#xff1a; String: 最常見的類型之一&#xff0c;用于返回邏輯…

[ctfshow web入門] web55

信息收集 這里把小寫字母都過濾了&#xff0c;眾所周知linux是大小寫區分的&#xff0c;沒有小寫字母根本整不出來命令 if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|[a-z]|\|\%|\x09|\x26|\>|\</i", $c)){system($c);} }else{highlight_file(__FILE…

2021-11-11 C++泰勒sin(x)以2步進乘方除以階乘加減第N項

緣由c書本題&#xff0c;求解了&#xff0c;求解-編程語言-CSDN問答 int n 10, d 3, z -1; double x 2.5, xx x;while (n){xx (乘方(x, d) / 階乘(d)) * z;d 2, --n, z * -1;}std::cout << xx << std::endl;

湖倉一體化介紹

目錄 一、湖倉一體化的定義與核心概念 二、湖倉一體化出現的背景 (一)數據倉庫的局限性 (二

倉頡編程語言快速入門:從零構建全場景開發能力

在萬物互聯的智能時代,編程語言的演進始終與計算范式的革新緊密相連。華為推出的倉頡編程語言(Cangjie Programming Language)以“原生智能化、天生全場景”為核心理念,為開發者提供了一種兼顧高效開發與極致性能的新選擇。本文將帶你從零開始,快速掌握這門面向未來的語言…

AI教你學VUE——Deepseek版

一、基礎階段&#xff1a;打好Web開發基礎 HTML/CSS基礎 學習HTML標簽語義化、CSS布局&#xff08;Flex/Grid&#xff09;、響應式設計&#xff08;媒體查詢、REM/VW單位&#xff09;。資源推薦&#xff1a; MDN Web文檔&#xff08;免費&#xff09;&#xff1a;HTML | CSS實戰…

DeepSeek智能時空數據分析(八):NL2SQL繪制河流-軌跡緩沖區如何生成

序言&#xff1a;時空數據分析很有用&#xff0c;但是GIS/時空數據庫技術門檻太高 時空數據分析在優化業務運營中至關重要&#xff0c;然而&#xff0c;三大挑戰仍制約其發展&#xff1a;技術門檻高&#xff0c;需融合GIS理論、SQL開發與時空數據庫等多領域知識&#xff1b;空…

推導部分和-圖論+dfs+連通塊

先研究一下&#xff0c;感覺有點像lca里的樹上前綴和&#xff0c;不過樹有多顆&#xff0c;用color區分一下 https://www.luogu.com.cn/problem/P8779 #include<bits/stdc.h> using namespace std; #define N 100011 typedef long long ll; typedef pair<int,int&g…

WPF MVVM入門系列教程(六、ViewModel案例演示)

&#x1f9ed; WPF MVVM入門系列教程 一、MVVM模式介紹二、依賴屬性三、數據綁定四、ViewModel五、命令和用戶輸入六、ViewModel案例演示 在前面的文章中&#xff0c;介紹了ViewModel的基礎概念 本文會使用一些實例來進行ViewModel的演示 一個基礎的數據展示示例 假設我們要…

第2章 算法分析基礎

2-1 算法的時間復雜度分析 2.1.1 輸入規模與基本語句 輸入規模&#xff1a;算法處理數據的規模&#xff0c;通常用 n 表示。 基本語句&#xff1a;執行次數與輸入規模直接相關的關鍵操作。 例2.1 順序查找 int SeqSearch(int A[], int n, int k) { for (int i 0; i < n…

QT高級(1)QTableView自定義委托集合,一個類實現若干委托

自定義委托集合 1同系列文章2 功能3 源碼 1同系列文章 QT中級&#xff08;1&#xff09;QTableView自定義委托&#xff08;一&#xff09;實現QSpinBox、QDoubleSpinBox委托 QT中級&#xff08;2&#xff09;QTableView自定義委托&#xff08;二&#xff09;實現QProgressBar委…

webrtc 視頻直播

webrtc 是一種開源的音視頻通信技術&#xff0c;可以不借助中間媒介建立瀏覽器點對點&#xff08;peer-to-peer&#xff09;連接&#xff0c;實現音視頻以及其他數據的傳輸。webrtc具有平臺兼容性&#xff0c;低延遲與高實時的優點。今天主要記錄一下webrtc的使用記錄&#xff…

游戲引擎學習第261天:切換到靜態幀數組

game_debug.cpp: 將ProfileGraph的尺寸初始化為相對較大的值 今天的討論主要圍繞性能分析器&#xff08;Profiler&#xff09;以及如何改進它的可用性展開。當前性能分析器已經能夠正常工作&#xff0c;但我們希望通過一些改進&#xff0c;使其更易于使用&#xff0c;特別是在…

three.js設置物體輪廓發光和物體發光

設置物體輪廓發光 <script setup> import * as THREE from three; import { OrbitControls } from three/addons/controls/OrbitControls.js; // 導入后期合成 import { EffectComposer } from three/examples/jsm/postprocessing/EffectComposer.js; import { RenderPas…

homebrew安裝配置Python(MAC版)

Mac系統自帶python路徑為: /System/Library/Frameworks/Python.framework/Versionbrew 安裝 Python3 在終端輸入以下命令&#xff1a; brew search python3 # 查看支持安裝的版本 brew install python3就可以輕松easy安裝python了&#xff0c;安裝完成后提示 查看 pyth…

如何建設網站?網站建設簡單步驟有哪些?

新手如何開展網站建設&#xff1f;網站建設包括哪些步驟&#xff1f; 在開展網站建設之前先清楚了解網站建設的流程和步驟&#xff1a;注冊域名、租用虛擬主機/服務器、建站工具的選取、網站建設流程詳細流程共計7步&#xff0c;分別是注冊域名、域名實名制、服務器或虛擬主機、…

當K8S容器沒有bash時高階排查手段

遇到容器沒有bash甚至沒有sh的情況&#xff0c;就像被困在沒有門窗的房間。但真正的K8S運維高手&#xff0c;即使面對這種情況也能游刃有余。 一、無Shell容器三大特征 極簡主義&#xff1a;移除所有非必要組件&#xff08;如/bin/sh&#xff09;安全加固&#xff1a;減少攻擊…

Python案例實戰《手勢識別》

目錄 1、效果圖2、手勢識別關鍵步驟&#xff08;1&#xff09; 導入必要的庫&#xff08;2&#xff09;配置 MediaPipe&#xff08;3&#xff09;啟動攝像頭&#xff08;4&#xff09;設置手指張開判斷的距離閾值&#xff08;5&#xff09;計算手指之間的歐幾里得距離&#xff…

5G賦能農業物聯網:智能化種植的新紀元

5G賦能農業物聯網&#xff1a;智能化種植的新紀元 在農業領域&#xff0c;精準化、智能化已成為現代農業發展的方向。而5G的出現&#xff0c;讓農業物聯網&#xff08;Agri-IoT&#xff09;突破了傳統的瓶頸&#xff0c;真正實現了實時監測、高效數據傳輸、智能化決策&#xf…