【linux系統】6. 基礎開發工具(一)

一. 軟件包管理器

1)Linux下安裝軟件的常用方法

1. 源代碼安裝
? ?下載程序的源代碼,本地編譯成二進制文件,拷貝到系統指定路徑下。
2. rpm包安裝
? ?已經編譯好的安裝包,使用rpm對應的指令去安裝,也比較麻煩。
3. 包管理器安裝 --- 最佳實踐

2)什么是軟件包、包管理器?

1. 軟件包就相當于APP,而軟件包管理器就相當于軟件商城(AppStore)。
2. 兩個常用的軟件包管理器
?① yum(Yellowdog?Updater,?Modified):主要用在Fedore,RedHat,Centos等發行版上。
?② apt(Advanced?Packaging?Tool):主要用在Debian,Ubuntu等發行版上。
3. 功能:提供自動解決依賴關系、下載和安裝軟件包的功能。

3)軟件下載的過程

包管理器分析這個軟件依賴哪些庫或程序,自動從配置好的軟件源對應的軟件包服務器上查找所有的軟件包并下載,將這些包解壓,放到系統指定的目錄下。


Linux軟件生態問題

4)操作系統被設計出來之后最重要的是什么?

1. 最重要的事情就是:被更多人使用
2. 當操作系統被設計出來,不同的發行版有更適合的人群和圈子,比如學生群體以及初學者適合ubuntu,極客群體適合Kali,企業級開發適合。形成使用的圈子只是一種吸引人的手段,目的還是希望有更多人使用。
3. 如何讓操作系統被更多人使用呢?完善相關生態 --- 社區、文檔、論壇、資料等(一定有人愿意在特定的操作系統上編寫特定的軟件并開源,適應不同的群體)。希望操作系統被更多人使用也是一些人維護社區論壇、官網文檔、軟件體系、更新速度、操作系統自身以及富有針對性的群體的最原始的動力。

5)我們如何評估一款操作系統的好壞?

看它的核心技能與性能、對應的生態如何等。

軟件的開發者需要開發軟件、將源代碼在不同的平臺編譯發布、最終上線放在對應版本的軟件包服務器上。


6)為什么開發者愿意做這么多工作,免費為社區提供軟件,編譯發布出來,還提供云服務器讓我們下載?

1. 理想與信仰(最根本的驅動力):他們愿意為技術的推動免費貢獻力量
2. 協作與認同,為自己的職業生涯構建更多的機會和更好的聲譽,或者回饋社區。
3.可能這批人之前也做了操作系統,為了讓他們的操作系統被更多人使用,他們也愿意把配套的軟件做出來,把生態搞好。
4. 軟件包服務器:開發還需要服務器,維護等等都需要資金。在版本維護時如果遇到困難可以到社區求助,自然會有依賴這些操作系統的企業或個人捐款(因為如果自己維護成本會更高)。


7)世界上的云服務器成千上萬,為什么yum/apt能知道去哪里申請?(類似的,我們手機上的軟件商城是怎么知道去哪里下載的)

1. 包管理器就是一個軟件(屬于應用程序),并在我們的機器上內置了配置文件,在配置文件中就內置了包服務器的URL(統一資源定位符、超鏈接,可以就先理解為云服務器的IP地址),通過URL就可以找到對應的機器。
2. yum/apt是軟件也是命令。

[root@hcss-ecs-116a ~]# which yum
/usr/bin/yum

3. Linux的發行版基本都是外國人寫的,內置的配置文件中的服務器地址也都是國外的云服務器。
因為一些原因,國外的地址可能不允許我們訪問,即使能訪問也不太穩定,或者太慢。
所以國內的某些公司、組織、高校都會免費給社區構建包服務器,構建好之后就將國外的資源鏡像(就是拷貝)到國內。之后我們國內的云服務器廠商,他們用的是國外的操作系統,但是在給我們安裝操作系統時就會將國外的鏈接替換成國內的(替換的過程也叫鏡像源/軟件源配置,這個過程不需要我們做,服務器的廠商會做)。

1. 清華大學開源軟件鏡像站

國內最著名、最全面的鏡像站之一,支持幾乎所有主流發行版。

· 官方網址: https://mirrors.tuna.tsinghua.edu.cn/
· 常用鏈接:
? · Ubuntu: https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/
? · Debian: https://mirrors.tuna.tsinghua.edu.cn/help/debian/
? · CentOS: https://mirrors.tuna.tsinghua.edu.cn/help/centos/
? · Arch Linux: https://mirrors.tuna.tsinghua.edu.cn/help/archlinux/

2. 中國科學技術大學開源軟件鏡像站

同樣非常老牌和可靠的鏡像站,速度很快。

· 官方網址: http://mirrors.ustc.edu.cn/
· 常用鏈接:
? · Ubuntu: http://mirrors.ustc.edu.cn/help/ubuntu.html
? · Debian: http://mirrors.ustc.edu.cn/help/debian.html
? · CentOS: http://mirrors.ustc.edu.cn/help/centos.html
? · Arch Linux: http://mirrors.ustc.edu.cn/help/archlinux.html

3. 阿里云開源鏡像站

由阿里巴巴云服務維護,網絡連通性非常好,尤其適合阿里云ECS用戶。

· 官方網址: https://developer.aliyun.com/mirror/
· 常用鏈接:
? · Ubuntu: https://developer.aliyun.com/mirror/ubuntu
? · Debian: https://developer.aliyun.com/mirror/debian
? · CentOS: https://developer.aliyun.com/mirror/centos
? · EPEL: https://developer.aliyun.com/mirror/epel

4. 華為云開源鏡像站

由華為云維護,同樣提供高質量的鏡像服務。

· 官方網址: https://mirrors.huaweicloud.com/
· 常用鏈接:
? · Ubuntu: https://mirrors.huaweicloud.com/ubuntu/ (進入后查看使用幫助)
? · Debian: https://mirrors.huaweicloud.com/debian/
? · CentOS: https://mirrors.huaweicloud.com/centos/
? · openEuler: https://mirrors.huaweicloud.com/openeuler/


8)軟件包之間的依賴關系

1. 即使是我們自己寫一個C語言的代碼也會依賴很多庫,一個軟件以來的東西可能更多,少一樣軟件就運行不了(所以上面說的安裝軟件的前兩種方式非常麻煩,我們要知道軟件所有的依賴并全部安裝到自己的系統中)。

2. ldd指令

功能:查看一個指令、軟件依賴了什么庫。
這是ls指令依賴的所有庫,只要刪掉一個ls就無法正常使用了。

[root@hcss-ecs-116a ~]# ldd /usr/bin/lslinux-vdso.so.1 =>  (0x00007ffdca77e000)libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fb7bc1ad000)libcap.so.2 => /lib64/libcap.so.2 (0x00007fb7bbfa8000)libacl.so.1 => /lib64/libacl.so.1 (0x00007fb7bbd9f000)libc.so.6 => /lib64/libc.so.6 (0x00007fb7bb9d1000)libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fb7bb76f000)libdl.so.2 => /lib64/libdl.so.2 (0x00007fb7bb56b000)/lib64/ld-linux-x86-64.so.2 (0x00007fb7bc3d4000)libattr.so.1 => /lib64/libattr.so.1 (0x00007fb7bb366000)libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb7bb14a000)

9)yum/apt?list(查看軟件包)

把對應包服務器上的所有包名列出來。也可以通過管道級聯命令,篩選想要的軟件包。

[lsy@hcss-ecs-116a ~]$ sudo yum list | grep sl

10)安裝軟件

1. sudo yum/apt install -y XXX(不加-y安裝過程中會詢問是否確認安裝,加了就直接安裝不會再詢問)
2. 出現complete或者沒有報錯就是安裝成功了
3. sl是Linux中一個有趣的軟件 --- 小火車

11)卸載軟件

sudo yum/apt remove -y XXX

12)其實我們的云服務器不僅內置了軟件包服務器的URL,還有擴展包服務器的。

基礎源:追求極致的穩定性。軟件版本可能相對較舊,但經過了充分的測試,能與系統完美兼容。擴展源:可以提供更新版本的軟件(例如,最新版本的 PHP、Python 或 Nginx),以滿足開發者的需求,但可能引入更多的兼容性風險。

13)配置文件在哪里?

查看配置文件,可以看到軟件源的鏈接,不過有些連接可能已經失效或者屬于公司內部不允許外部訪問的資源,所以導致無法訪問。
apt:/ect/apt/sources.list
yum:/etc/yum.repos.d/CentOS-Base.repo

[root@hcss-ecs-116a ~]# cd /etc/yum.repos.d/
[root@hcss-ecs-116a yum.repos.d]# less CentOS-Base.repo

全部以CentOS為例

14)更新軟件源流程

1. 備份原本的軟件源(mv改個名)
2. 找新的yum源并下載
3. 改成配置文件的名
4. 更新緩存
? ?yum clean all
? ?yum make cache
5. 配置擴展源:yum -y install epel-release(ubuntu下基礎源和擴展源的配置文件是在一起的就不需要這一步了)

15)yum/apt 不允許同一時間多人使用,犧牲并發性換取可靠性。
16)yum/apt 使用必須聯網(ping 指令可以檢查網絡連接是否正常,具體的使用方式可以用大模型生成)。

二. vim 編輯器

windows下,我們通常使用IDE(集成開發環境)作為開發工具。但是Linux下的開發工具都是獨立的,比如:
1. 寫代碼的編輯器 --- vim、vi(老編譯器,我們不考慮)

2. 編譯代碼 --- gcc、g++

3. 調試 --- gdb、cgdb

4. 構建工具 --- makefile、make、cmake

5. 和遠端服務器協同的工具 --- git

1)vim 是一個在終端下只用來寫代碼的工具。

2)沒配置過的vim沒有代碼補齊等功能。

3)用vim寫一個hello world并編譯運行。

進入vim 編輯器后要先按 i 才能編輯(稍后介紹具體原因,現在只是簡單演示),編輯完成先按Esc,再輸入 :wq(冒號也要輸入的)進行保存并退出,我們的代碼就編寫好了。緊接著編譯運行(這兩步之前已經演示講解過)

[lsy@hcss-ecs-116a code]$ vim hello.c

[lsy@hcss-ecs-116a code]$ gcc -o hello.exe hello.c
[lsy@hcss-ecs-116a code]$ ./hello.exe
Hello World

4)vim的多模式

1. 我們平時再Windows中使用的快捷鍵,比如ctrl + c、ctrl + v ...也是命令,他們就是為了增加編輯效率,那么是不是命令越多,效率越高?是的。因為這些命令的本質就是自動化和批量化。
2. 最主要的模式有三個:命令模式、底行模式、插入模式。還有比較常用的模式:視圖模式、替換模式。
3. vim圍繞命令展開,在打開時就處在命令模式(命令模式下無法進行正常的編輯,所以我們上面的演示中需要先按一下 i ,這一步其實是在進行模式切換),我們的討論也圍繞命令模式展開。
4. 先給出模式之間的切換方式圖

5. 除了視圖模式可以直接到插入模式,其他模式之間的切換都要經過命令模式。而從其他模式返回的方式很統一,按Esc鍵。
6. 從命令模式進入插入模式的三種方法有細微的區別
?① i :直接切換,不做其他操作。
?② a:切換的同時光標右移一位
?③ o:切換的同時光標下移一位

提前給出的小知識(方便演示)

1. set nu? ? 底行模式中調出行號

2. set nonu? ? 去掉行號

3. :wq? ? 退出vim。


5)命令模式

1. 光標的定位問題
① gg(快速兩下g)? ?回到文本開始。
②?shift + g? ? 光標移動到文本結尾。
③ n+shift+g? ? 光標定位到任意一行。(n就是數字,除了這個功能,下面所有前面加數字可處理多行的都可以不加數字,不加數字就處理單行或單個)

錨點
④ $? ? 移動到光標所在行的行尾。
⑤ ^? ? 定位到當前行的開始。

⑥ hjkl 等于 鍵盤右下角的左下上右,就是按指定方向移動光標。
? 既然已經有了直觀地左下上右鍵為什么還需要hjkl:一方面是我們打字的時候這幾個鍵就在手下,好按,快。另一方面是為了兼容老版本,以前的鍵盤沒有左下上右這幾個鍵。
⑦ n+w? ? 以單詞為單位向右移動n,如果遇到的不是單詞,就按一個一個的字符跳。
⑧ n+b? ??以單詞為單位向右移動n,如果遇到的不是單詞,就按一個一個的字符跳。

2. 復制粘貼,剪切撤銷,編輯刪除類的
① n+yy? ? 復制光標所在行以及下面n行。
② n+p? ? 粘貼n次,到光標所在行的下一行。
③ u? ? 撤銷(保存之后依然可以撤銷,但是退出vim之后就不可以通過撤銷回退到上一步了)
④ ctrl+r? ? 撤銷u所做的撤銷操作。(他和u可以互相撤銷)
⑤ n+dd? ? 剪切包含當前行在內的往下n行,p一下可粘貼剪切的內容,不粘貼的話,我們可以把dd當作刪除整行用。
⑥ shift+~? ? 大、小寫字母切換(按住shift之后連續按~,光標自動向右移動,處理這一行后面的內容)。
⑦ n+x? ? 向右刪除光標所在位置的字符。
⑧ n+shift+x? ? ?向左刪除光標所在位置的字符。
⑨ n+r+你要替換的字符? ? (批量化進行一個字符的替換,即連續n個字符都用輸入的那個字符替換)

批量化的內容替換(無視原來的內容,直接覆蓋)切換到替換模式:shift+r

6)視圖模式(VISUAL BLOCK)

1. 編寫代碼過程中避免不了的批量注釋和取消注釋,在vim中如何實現呢?
① 批量化注釋
? ctrl+v進入視圖模式 --> n+(hjkl)選中區域,因為注釋通常都在同一列,所以我們在做批量注釋這一操作時通常都使用 j(向下) --> shift+i 從視圖模式直接進入插入模式,不經過命令模式 --> 輸入 // --> 按Esc回到命令模式即可。
② 批量化取消注釋
? ctrl+v --> n+jl 選中所有的 // --> d

2. 這就是一種批量化處理的方式,既然我們可以批量化的增加或者去掉 // 自然也可以批量增加或減少任何東西。只要選好區域

7)底行模式

首先按冒號:進入底行模式。底行就是最下面的一行,可以在最下面一行輸入對應命令。

1. /關鍵詞 --> n? ?(這個n不是數字的意思,是next,搜索出很多帶關鍵詞的內容是,按n光標會自動跳到下一個)自動搜索并高亮帶關鍵字的所有內容,按n光標跳到下一個。
2. %s/A/B/g? ? 將文件中的所有A替換為B(A變B)
3. !+shell指令? ? 可以在底行直接執行shell命令,不需要退出vim。常用于在vim中直接編譯運行源文件,方便。

vim本身有創建文件的能力,所以我們想用vim寫一個文件時不需要先touch hello.c再vim hello.c。直接vim hello.c,vim就會創建并打開一個名為hello.c的文件。

4. 為了更好地支持多文件編寫代碼,vim可以分屏,一個屏是一個文件。
① vs? ? 分屏(分屏的同時創建文件)
② ctrl+ww? ? 選擇不同的屏幕(光標在哪塊屏)
--千萬別忘了這些都是要在底行模式下做的,冒號別忘了!!

8)其他小點

1. 插入模式就是普通的編輯模式。
2. 當vim退出時,光標在第n行,再次打開時光標還在原來的位置。
3. vim? XXX.X(文件名)? +n? ? 打開文件時。將光標直接定位在第n行。

4. 有時候作為普通用戶,我們可能不小心去掉了自己的讀或者寫權限,導致我們進入vim后可能不讓我們看或者修改之后不讓我們保存。但是我們是文件的擁有者,所以有強制保存的方法? ? 在底行模式中輸入w!,我們都知道w是保存,加個感嘆號表示強制。
5. 如果我們修改了文件還沒來得及保存就和我們的云服務器斷開了連接(可能是不小心關了XShell,可能是長時間沒有活動XShell連接超時自動斷開了與云服務器的連接,或者網絡突然中斷等等原因),重新登陸后會提醒我們有一個未保存的后綴為.swp的臨時文件,問我們要怎么辦。此時我們可以選擇R重新打開文件并保存退出。但是再進還是提醒有這么一個臨時文件,讓我們選擇怎么辦,此時只需要回到shell命令行中,刪掉這個臨時文件。但是需要注意,臨時文件是以.開頭的隱藏文件,我們可以用ls -al指令查看,并刪掉。

下面演示一下,我在沒有保存的情況下直接關掉了XShell。

刪除之后就能正常用vim打開文件了。

9)vim中的退出方式

1. 底行模式下 wq
2. 命令模式下 shift + zz

有了以上的對權限的認知和對vim使用方法的掌握,我們就獲得了通過修改/etc/sudoers文件,將用戶添加進白名單的能力。必須使用root賬號操作。


1. vim /etc/sudoers

2. 找到下圖位置

3. 將100行的內容復制粘貼一份到下一行,并將root改為你要添加進來的賬號名。

4. 強制保存并退出(因為文件的權限問題和特殊性,即使是root賬號也不能修改文件內容,但是root作為文件的擁有者,有權利強制保存)

5. 此時我們就修改完成了,可以檢查一下lsy這個賬號是否可以使用sudo命令。

10)vim的簡單配置

1. vim其實是系統的一條基本指令,啟動前會自動到配置文件中讀取配置項。

[lsy@hcss-ecs-116a ~]$ which vim
/usr/bin/vim

2. 在系統的/etc/目錄下有一個名為vimrc的文件,這是系統中公共的vim配置文件,對所有用戶都有效。
而每個普通用戶在自己的家目錄下都可以建立一個私有的配置文件,必須命名為 .vimrc
如果不存在就自己創建一個。
3. 所以對vim的配置,本質就是把配置項寫進/home/XXX/.vimrc這個配置文件中。
4.常見的配置項都有哪些呢?我們可以問一問ai大模型,讓他直接幫我們生成一些常用好用的。下圖是配置成功之后再次打開.vimrc文件的效果,他是配置之后(保存并退出)立即生效的。

5. 但是這些并不是很好用,只是美化了一些,并沒有我們最需要的代碼補齊,語法提示等功能。所以我們需要一些插件。自己配置相對麻煩,可以直接到碼云上獲取(這個只對CentOS7系列有效):https://gitee.com/HGtz2222/VimForCpp
找到下面的安裝方法部分,并復制紅色框選部分內容。
curl -sLf?https://gitee.com/HGtz2222/VimForCpp/raw/master/install.sh?-o ./install.sh && bash ./install.sh

粘貼到你要配置的普通賬號的命令行下,root賬號有自己的配置文件,不建議修改,我們只配置個人的就好。然后等待幾分鐘就好。

這樣就已經安裝成功了,可以隨便打開一個源文件使用一下。語法提示,代碼補全,關鍵字高亮等等功能比較齊全。

這里自動縮進默認是兩個空格,如果想改也可以:
① vim .vimrc
② 在底行模式下搜索2? ? :/2
③ 將2全部改成你想要的縮進量
④ 保存并退出

6. vim配置只在當前賬號下有效,并不是配置一次這臺機器上的所有用戶都好用。

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

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

相關文章

ffplay數據結構分析

struct VideoState 播放器封裝 typedef struct VideoState {SDL_Thread *read_tid; // 讀線程句柄AVInputFormat *iformat; // 指向demuxerint abort_request; // 1時請求退出播放int force_refresh; // 1時刷新畫面,請求立即刷新畫面的意思int paused; …

OpenCV:銀行卡號識別

目錄 一、項目原理與核心技術 二、環境準備與工具包導入 1. 環境依賴 2. 工具包導入 三、自定義工具類 myutils.py 實現 四、主程序核心流程(銀行卡識別.py) 1. 命令行參數設置 2. 銀行卡類型映射 3. 輔助函數:圖像展示 五、步驟 1…

基于spark的澳洲光伏發電站選址預測

基于spark的澳洲光伏發電站選址預測項目概況 [👇👇👇👇👇👇👇👇] 點這里,查看所有項目 [👆👆👆👆👆👆&#x…

Kibana 雙棧網絡(Dual-Stack)支持能力評估

#作者:Unstopabler 文章目錄一.測試目標二.測試環境三.Kibana1、查詢 Kibana pod信息2、查詢Kibana service信息3、Kibana service 設置四.驗證測試1、Kibana 監聽參數設置2、Kibana節點IPv4狀態檢查3、Kibana節點IPv6…

標準CAN幀介紹

標準CAN幀介紹標準CAN(Controller Area Network)結構1.幀起始(SOF-Start Of Frame)2.仲裁段(Arbitration Field)3.控制段(Control Field)4.數據段(Data Field&#xff09…

easyPoi實現動表頭Excel的導入和導出

easyPoi實現動表頭Excel的導入和導出 Maven依賴 !-- EasyPoi 核心依賴 --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-base</artifactId><version>4.4.0</version></dependency><!-- EasyPoi Web…

瘋狂星期四文案網第67天運營日記

網站運營第67天&#xff0c;點擊觀站&#xff1a; 瘋狂星期四 crazy-thursday.com 全網最全的瘋狂星期四文案網站 運營報告 今日訪問量 今日搜索引擎收錄情況

CAS理解

CAS&#xff08;Compare And Swap&#xff09; 是非阻塞同步的實現原理&#xff0c;它是CPU硬件層面的一種指令&#xff1b; CAS制定操作包含三個參數 內存值&#xff08;內存地址&#xff09;v預期值E新增值N 當CAS指令執行時&#xff0c;當且僅當預期值E和內存值V相同時&…

【SQL】指定日期的產品價格

目錄 題目 分析 代碼 題目 產品數據表: Products ------------------------ | Column Name | Type | ------------------------ | product_id | int | | new_price | int | | change_date | date | ------------------------ (product_id, chang…

《突破Unity+騰訊云聯機瓶頸:多人游戲同步延遲與數據安全的雙維度優化》

在Unity開發的多人聯機游戲中&#xff0c;騰訊云的云服務器&#xff08;CVM&#xff09;、游戲多媒體引擎&#xff08;GME&#xff09;與云數據庫&#xff08;CDB&#xff09;共同構成了聯機體驗的核心支撐。但隨著玩家并發量提升與游戲玩法復雜度增加&#xff0c;“實時同步延…

BisenetV1/2網絡以及模型推理轉換

BisenetV1/2網絡以及模型推理轉換 文章目錄BisenetV1/2網絡以及模型推理轉換1 BiSenetV11.1 Contex Path1.2 Spatial Path1.3 ARM1.4 FFM1.5 backbone2 模型推理代碼流程分析2.1 加載模型2.2 模型推理① 轉換張量② 輸入尺寸調整③ 模型推理④ 輸出尺寸還原⑤ 類別預測⑥ 保存繪…

Android開發-文本輸入

一、EditText 基礎&#xff1a;不僅僅是輸入框EditText 是 TextView 的子類&#xff0c;允許用戶輸入和編輯文本。1. 基本布局<EditTextandroid:id"id/et_username"android:layout_width"match_parent"android:layout_height"wrap_content"an…

數據化存儲菜單,國際化方案

djangoclass Menu(models.Model):parent_id models.BigIntegerField(default0, verbose_name父菜單ID)name models.CharField(max_length50, verbose_name菜單名稱)icon models.CharField(max_length50, blankTrue, nullTrue, verbose_name菜單圖標)path models.CharField(…

SQL-用戶管理與操作權限

在 SQL 中&#xff0c;用戶管理和權限操作是數據庫安全管理的核心組成部分&#xff0c;用于控制 “誰能訪問數據庫” 以及 “能對數據庫做什么”。它們共同保障數據庫的安全性、完整性和合規性。一、用戶管理&#xff1a;控制 “誰能訪問數據庫”用戶管理是指對數據庫用戶的創建…

計算機視覺案例分享之答題卡識別

目錄 一、基本流程 二、代碼實現 1. 導入工具包和定義常量 2. 輔助函數定義 2.1 坐標點排序函數 2.2 透視變換函數 2.3 輪廓排序函數 2.4 圖像顯示函數 3. 主程序處理流程 3.1 圖像預處理 3.2 輪廓檢測與透視變換 3.3 閾值處理與選項檢測 3.4 答案識別與評分 我們…

Java面試問題記錄(四)

四、設計模式1、設計模式6大原則1&#xff09;單一職責(一個類和方法只做一件事)、2&#xff09;里氏替換(多態&#xff0c;子類可擴展父類)、3&#xff09;依賴倒置(細節依賴抽象&#xff0c;下層依賴上層)、4&#xff09;接口隔離(建立單一接口)、迪米特原則(最少知道&#x…

高等教育學

高等教育學第一章 高等教育與高等教育學第二章 高等教育發展史2-1西方高等教育發展史2-2中國高等教育發展史第三章 高等教育理念3.1-王一軍-高等教育理念的構成要素3.2-王一軍-高等教育理念的主要流派第四章 高等學校教育4.1 高等學校教育制度4.2-陳何芳-高等教育辦學體制 &…

unordered_map使用MFC的CString作為鍵值遇到C2056和C2064錯誤

文章目錄unordered_map使用MFC的CString作為鍵值遇到C2056和C2064錯誤問題出現的背景解決方案總結unordered_map使用MFC的CString作為鍵值遇到C2056和C2064錯誤 問題出現的背景 在我的一個老工程項目中&#xff0c;使用C的std::unordered_map時&#xff0c;使用了MFC的CStrin…

Maven 本地倉庫的 settings.xml 文件

本地倉庫目錄位置&#xff1a;C:/用戶/用戶名/.m2/repository 需要修改配置&#xff0c;具體的修改方法請看 ↓↓↓ 2024版 IDEA 用 Maven 創建 java 項目&#xff08;Maven 安裝和配置&#xff09; <?xml version"1.0" encoding"UTF-8"?><!…

vue動畫內置組件

文章目錄vue動畫的官方類名EnterLeaveTransition組件注意事項觸發實例TransitionGroup組件注意事項觸發機制實例拓展vue動畫的官方類名 如下來自vue官方文檔&#xff0c;提供了dom元素&#xff0c;插入Enter和刪除Leave的類名 Enter v-enter-from&#xff1a;進入動畫的起始…