DNS服務的部署與配置(2)

1、dns的安裝及開啟

dnf install bind.x86_64 -y ?? ??? ?#安裝
#Berkeley Internet Name Domain (BIND)

systemctl enable --now named?? ?#啟用dns服務,服務名稱叫named
firewall-cmd --permanent --add-service=dns #火墻設置
firewall-cmd --reload?? ??? ??? ?#重啟火墻
setenforce 0?? ??? ??? ??? ??? ?#調整內核級火墻為警告模式

2、配置dns服務使內網主機可以訪問其dns資源

netstat -antlupe | grep named?? ??? ??? ??? ?#可以查看dns開放端口

vim /etc/named.conf?? ??? ??? ??? ??? ??? ??? ?#編輯dns配置文件,對文件做以下修改
11行左右 listen-on port 53 { any; }; ?? ??? ?#在本地所有網絡接口上開啟53端口
19行左右 allow-query { any; }; ?? ??? ??? ??? ?#允許查詢A記錄的客戶端列表,提供服務給所有主機
20行左右 forwarders { 114.114.114.114; };?? ?#將源換為國內的,指定資源從114上取,這樣速度會快一點
34行左右 dnssec-validation no; ?? ??? ??? ??? ?#禁用dns檢測使dns能夠緩存外部信息到本機,開著會因為檢測不合規返回不了“答案”
##每一個字符串一定要用分號結尾

systemctl restart named?? ??? ??? ??? ??? ??? ?#重啟服務

使用內網其他主機測試:

vim /etc/resolv.conf #編輯dns指向文件 nameserver 192.168.187.129

#添加我們配置的dns服務器的ip dig www.baidu.com

#解析測試我們的dns服務器配置是否成功

顯示NOERROR就是沒有問題!

3、DNS的正向解析

企業內部也需要對外提供dns做相應的解析工作!
準備工作:
在上個高速緩存配置的基礎上,先編輯主配置文件vim /etc/named.conf,將源注釋掉

然后使用命令nm-connection-editor將dns服務器在的主機和測試主機的ip都改為靜態ip
dns服務器的IP改成:192.168.187.129
測試主機IP改為:192.168.187.136? ?

修改配置并保存

(1)主機記錄A記錄

第一步:添加域名語句塊

vim /etc/named.rfc1912.zone
##和主配置文件里的內容一樣,里邊有要維護域名的語句塊
##主配置文件讀取域名信息就會到這個文件里讀取
##我們可以在這個文件里添加我們要維護的域名的語句塊
添加:
zone "lucky.com" IN { ?? ??? ??? ?#維護的域名
?type master; ?? ??? ??? ??? ??? ?#當前服務器位主dns
?file "lucky.com.zone"; ?? ??? ?#域名A記錄文件,要解析域名時看的是這個文件
?allow-update { none; }; ?? ??? ?#允許更新主機列表
};

第二步:編輯域名A記錄文件

cd /var/named/?? ??? ??? ??? ?#進入數據目錄
cp -p named.localhost lucky.com.zone?? ??? ?#復制模板得到我們要的域名A記錄文件,一定要加-p參數,所屬組相同

vim lucky.com.zone?? ??? ??? ?#編輯A記錄文件

A記錄文件內容及解釋如下:
$TTL 1D #TIME-TO-LIVE(dns地址保存時間長度)
@ IN SOA dns.lucky.com. root.lucky.com ( ?? ??? ?#SOA授權起始(Start of Authority),誰授權的
#@符的值就是/etc/named.rfc1912.zone文件里我們編寫的域名語句塊引號里的內容
#不是以.結尾的字符串都會被自動補齊@符的值
?0 ; serial ?? ??? ??? ?#域名版本序列號,下文dns集群會用到,有詳細解釋
?1D ; refresh ?? ??? ??? ?#刷新時間(輔助dns)
?1H ; retry ?? ??? ??? ?#重試時間(輔助dns)
?1W ; expire ?? ??? ??? ?#過期時間(輔助dns,查詢失敗過期停止對輔助域名的應答)
?3H ) ; minimum ?? ??? ?#A記錄最短有效期
??? ??? ?NS ?? ?dns.lucky.com.
dns ?? ?A ?? ?192.168.187.129
lucky.a A ?? ?192.168.187.97 ?? ??? ?##正向解析記錄
lucky.a A ?? ?192.168.187.99

復制并編輯A記錄文件

第三步:重啟并在另一臺內網主機測試
systemctl restart named
另一臺主機先檢查下dns服務器是不是我們設置的

然后dig www.lucky.com,如圖測試成功!
##多個ip會自動做輪調

(2)規范域名轉換CNAME記錄

當內部主機名不規范時,對外開放的是規范域名。
那么對外開放的域名只有一個,將對外開放的域名轉換到內部主機再做解析

dns服務器端:
vim /var/named/lucky.com.zone?? ??? ??? ?#編輯A記錄文件

添加:
www ? ? CNAME ? www.a.lucky.com.
#www.a.lucky.com.就是不規范域名

systemctl restart named?? ??? ?#重啟dns

客戶端:
dig www.lucky.com?? ??? ??? ?#另一臺主機測試

編輯文件

重啟

另一臺主機測試,如圖設置成功!

(3)郵件解析MX記錄

什么是MX記錄?
當我們在發送郵件時,假設我們用的163.com郵箱,需要將163.com解析成ip才能進行數據傳輸,這個ip就叫這個域的mx記錄(負責郵件發送和接收的ip)。

dns服務器端

vim /var/named/lucky.com.zone

#編輯A記錄文件 添加后保存退出:

lucky.com. MX 1 192.168.187.129.

systemctl restart named

#重啟dns

添加時寫的是服務器ip

客戶端:

dnf install postfix mailx -y? ? ? ? ? #安裝提供郵件投遞協議的軟件postfix和發送郵件的客戶端mailx systemctl start postfix? ? ? ? ? ? ? ?#開啟postfix服務?

dig -t mx lucky.com? ? ? ? ? ? ? ? ? #查看mx記錄

查看mx記錄,沒有問題

發郵件給root@lucky.com(自行類比@qq.com)
##因為在dns服務器端25端口是自用的(回環),所以不會收到郵件,所以我們在測試端看發送隊列看下效果即可
##如圖即是正向解析成功

4、DNS的反向解析

逆向查詢記錄PTR記錄

什么是PTR記錄?
郵件接收方只會顯示發送方的ip,需要做反向解析,顯示真實的域名,讓用戶知道郵件從哪兒來的。從ip到域名就是ptr記錄。

dns服務器端

vim /etc/named.rfc1912.zones?? ??? ??? ?#編輯文件
添加:
zone "187.168.192.in-addr.arpa" IN {
? ? ? ? type master;
? ? ? ? file "192.168.187.ptr";
? ? ? ? allow-update { none; };
};

cd /var/named/
cp -p named.loopback 192.168.187.ptr?? ??? ?#復制模板得到ptr文件

vim 192.168.187.ptr?? ??? ??? ??? ??? ??? ??? ?#編輯ptr記錄文件
修改成下文:
$TTL 1D
@ ? ? ? IN SOA ?dns.lucky.com. rname.invalid. (
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 0 ? ? ? ; serial
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1D ? ? ?; refresh
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1H ? ? ?; retry
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1W ? ? ?; expire
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 3H ) ? ?; minimum
? ? ? ? NS ? ? ?dns.lucky.com.
dns ? ? A ? ? ? 192.168.187.129
233 ? ? PTR ? ? www.lucky.com.
#反向解析IP192.168.187.233應該得到域名www.lucky.com

systemctl restart named?? ??? ??? ??? ??? ??? ?#重啟

編輯named.rfc1912.zones文件

編輯ptr記錄文件

客戶端:
dig -x 192.168.187.233測試如圖成功!

5、DNS的雙向解析


雙向解析:
在內網中的主機解析得到內網的ip,
在外網中的主機解析得到外網的ip。
實驗環境:
我們需要一臺雙網卡主機模擬內網,一臺單網卡主機模擬外網
dns服務器端做內網主機:
添加一個網卡,將ip設為192.168.0.0/24網段的
原來的192.168.187.0/24網段的做內網ip

單網卡主機做外網主機:
ip改為192.168.0.0/24網段的,模擬外網主機,并且將網關設為dns服務器端192.168.0.0/24網段的ip,保證兩臺主機能相互通信

兩臺主機更改完網絡后都需重啟網絡

nmcli connection reload

nmcli connection up

網絡名 例如客戶端網卡名為ens160,那么就是

nmcli connection up ens160

設置完后ping一下通了即可

dns服務器端(內網主機):

vim /etc/named.conf #編輯主配置文件

將下圖內容注釋掉:

注釋掉后,在下邊添加如下內容:
view localnet {
? ? ? ? match-clients { 192.168.187.0/24; };
? ? ? ? zone "." IN {
? ? ? ? ? ? ? ? type hint;
? ? ? ? ? ? ? ? file "named.ca";
? ? ? ? };
? ? ? ? include "/etc/named.rfc1912.zones";
};

view internet {
? ? ? ? match-clients { any; };
? ? ? ? zone "." IN {
? ? ? ? ? ? ? ? type hint;
? ? ? ? ? ? ? ? file "named.ca";
? ? ? ? };
? ? ? ? include "/etc/named.rfc1912.zones.inter";
};

拷貝/etc/named.rfc1912.zones文件得到/etc/named.rfc1912.zones.inter文件
cp -p /etc/named.rfc1912.zones /etc/named.rfc1912.zones.inter
vim /etc/named.rfc1912.zones.inter?? ??? ?#編輯外網配置文件
做如下圖更改:

拷貝A記錄文件得到外網的A記錄文件
cp -p /var/named/lucky.com.zone /var/named/lucky.com.inter
vim /var/named/lucky.com.inter?? ??? ?#編輯外網A記錄文件
做如下圖更改:
#把ip都改成我們想讓外網主機訪問時看到的ip

重啟systemctl restart named

vim /etc/resolv.conf? ? ? ?#添加dns服務器

ip nameserver 192.168.187.129

#因為更改過網絡,所以可能需要重新添加

客戶端(外網主機)

vim /etc/resolv.conf? ? ? ? ? ? ? ? ? ? #添加dns服務器

ip nameserver 192.168.187.129? ? #因為更改過網絡,所以可能需要重新添加

測試:
dns服務器端(內網主機):
dig -x 192.168.187.233測試,如圖顯示的內網ip,成功!

客戶端(外網主機):
dig -x 192.168.187.233測試,如圖顯示的外網ip,成功!

6、DNS集群

當我們的主dns服務器訪問量過大時,服務器不足以支撐這么大的訪問量,我們可以增加n臺輔助dns來分擔訪問壓力。
我們下面以增加一臺輔助dns來實驗如何使主輔dns同步更新!

輔助dns:


我以上面用過的客戶端主機為輔助dns
先將其IP改為和主dns一個網段的,192.168.187.136

更改完網絡后需重啟網絡

nmcli connection reload

nmcli connection up ens160

dnf install bind.x86_64 -y ?? ??? ?#也安裝dns
#Berkeley Internet Name Domain (BIND)

systemctl enable --now named?? ?#啟用dns服務,服務名稱叫named
firewall-cmd --permanent --add-service=dns #火墻設置
firewall-cmd --reload?? ??? ??? ?#重啟火墻
setenforce 0?? ??? ??? ??? ??? ?#調整內核級火墻為警告模式

vim /etc/named.conf?? ??? ??? ??? ?#編輯主配置文件
注釋掉11,12,19行

vim /etc/named.rfc1912.zones?? ?#在文件中加入域名語句塊
添加:
zone "lucky.com" IN {
? ? ? ? type slave;?? ??? ??? ??? ?#類型是輔助dns
? ? ? ? masters { 192.168.187.129; };?? ?#主dns
? ? ? ? file "slaves/lucky.com.zone";?? ?#數據同步到slaves目錄下
};

編輯主配置文件注釋掉如圖三行,就相當于全部都開啟(any)

添加域名語句塊

vim /etc/resolv.conf

nameserver 192.168.187.136? ? #將dns服務器改為自己的,為了看效果

systemctl restart named? ? #重啟dns服務

主dns:


我以上面配好的dns服務器192.168.187.129這臺主機為主dns

先去掉上個實驗的配置,防止影響

vim /etc/named.conf? ?

#編輯主配置文件

注釋掉如下圖內容:

vim /etc/named.rfc1912.zones

在域名語句塊內添加如下內容:

also-notify { 192.168.187.136; };? ?#輔助dns的ip

systemctl restart named? ? ? ? ? ? ?#重啟dns

測試:
輔助dns:
dig www.lucky.com得到如圖結果:

主dns:

vim /var/named/lucky.com.zone

#編輯A記錄文件 更改下ip和serial值:

之后在輔助dns端重新dig看是否同步成功

serial值的作用:
每更改一次該值并重啟主dns服務后,輔助dns就會重新同步A記錄
即重新同步域名所對應ip
一天可以改99次
值可以任意寫!
!!!!!但只能增量更改!!!!!

其他值解釋:
?1D ; refresh ?? ??? ??? ?#刷新時間(輔助dns)
?1H ; retry ?? ??? ??? ?#重試時間(輔助dns)
?1W ; expire ?? ??? ??? ?#過期時間(輔助dns,查詢失敗過期停止對輔助域名的應答)
?3H ) ; minimum ?? ??? ?#A記錄最短有效期

輔助dns:
dig www.lucky.com得到如圖結果:
測試成功!ip同步成功!

DNS(DHCP+DNS)動態域名解析

dhcp能自動分配ip,當重新分配時怎么讓dns知道ip重新分配了呢?ddns可以解決這個問題,實現動態域名解析。
更新原理:制作一個key,讓dhcp能更新dns的A記錄,key是更新域名的鑰匙。
在/var/named目錄下生成一個更新數據,在系統讀取A記錄時會把.jnl結尾的更新文件與A記錄文件整合實現。

ddns服務端

dnf install dhcp-server -y?? ??? ?#安裝dhcp服務器
cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf?? ??? ?#復制模板得到配置文件
vim /etc/dhcpd/dhcpd.conf?? ??? ?#編輯dhcp配置文件
做如下圖修改:
#修改最終結果是剩31行

systemctl start dhcpd?? ??? ?#開啟dhcp
接下來制作更新域的“鑰匙”key:
#/etc/rndc.key是dns默認使用的key模板,用的是SHA-256加密,所以我們下面也要使用SHA-256加密
cd /mnt/
dnssec-keygen -a HMAC-SHA256 -b 128 -n HOST luckykey
#SHA256加密方式是對稱的,公鑰和私鑰是一樣的

cp -p /etc/rndc.key /etc/lucky.key?? ??? ?#復制key模板得到key文件
vim /etc/lucky.key?? ??? ??? ??? ??? ??? ?#編輯key文件
改成如下內容:
key "luckykey" {?? ??? ??? ??? ??? ??? ?#我們前面取的key名字
? ? ? ? algorithm hmac-sha256;?? ??? ??? ?#加密方式
? ? ? ? secret "/P/GVMVRb/dNIjtr2qYvMg==";?? ??? ?#我們前面生成的密鑰,最好復制粘貼
};

vim /etc/named.conf? ? ? ? ?#更改dns主配置文件加key文件指向

在第45行左右添加key文件指向:

include "/etc/lucky.key";

vim /etc/named.rfc1912.zones? ? ? ? ? ? ?#域名語句塊在這里

在域名語句塊里添加key更新:

如下圖:

systemctl restart named?? ??? ?#重啟dns

接下來測試一下該key能否更新dns:
nsupdate -k Kluckykey.+163+37031.private?? ??? ?#-k指定key,不指定send會失敗
> update add hello.lucky.com 86400 A 192.168.187.111?? ?#新增A記錄
> send?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#成功
> update del hello.lucky.com?? ??? ??? ??? ??? ??? ??? ?#刪除A記錄
> send?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#成功
> quit?? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ??? ?#退出
測試成功!繼續下一步

vim /etc/dhcp/dhcpd.conf ?? ??? ??? ?#編輯dncp配置文件

打開dns更新的“開關”:
第14行取消注釋,并改為interim(網絡更新):
ddns-update-style interim;

在最后指定key,相當于讓dhcp拿到了dns更新的“鑰匙”:
key luckykey {?? ??? ??? ??? ??? ??? ??? ?#我們前面取得key的名字,別寫錯了
? algorithm hmac-sha256;
? secret /P/GVMVRb/dNIjtr2qYvMg==;?? ??? ?#最好直接復制前面我們生成的key文件里的防止出錯
};

在最后加入key要更新的域:
zone lucky.com. {
? primary 127.0.0.1;?? ??? ??? ??? ??? ?#dns在本機,所以直接寫本機回環接口就可以了
? key luckykey;?? ??? ??? ??? ??? ??? ??? ?#我們前面取得key的名字,別寫錯了
}

刪掉jnl文件(不然前面的更新測試會影響):

rm -fr /var/named/lucky.com.zone.jnl

重啟兩個服務:

systemctl restart dhcpd

systemctl restart named

客戶端:
首先要關閉VM虛擬機的本地dhcp服務,如下圖操作即可:
##如果是真機是linux系統直接在虛擬機里改配置文件即可

選擇更改設置

取消勾選本地dhcp服務

然后將我們之前設置的靜態ip改為dhcp:

nm-connection-editor

測試下我們是否關閉本地dhcp成功:

nmcli connection up ens160? ? ? ? ? #重啟網卡

cat /etc/resolv.conf? ? ? ? #看下dns服務用的誰的

如圖是用的我們自己配置的,設置成功!

改下主機名方便測試:

hostnamectl? ? ? ?#查看主機名?

hostnamectl set-hostname nodeb.lucky.com? ? ? #改主機名為nodeb.lucky.com

測試:
客戶端:

dig? ? nodeb.lucky.com

ifconfig? ? ?看兩個出來的ip一樣否

如圖是一樣的

dns服務端:

vim /etc/dhcp/dhcpd.conf? ? ?#編輯dncp配置文件

改一下ip范圍:

我改為了77-90,如下圖:

重啟下dhcp服務: systemctl restart dhcpd

客戶端

nmcli connection up ens160? ? ? ? ? ? ? ? #重啟網卡,

那么會重新獲取ip

dig nodeb.lucky.com

ifconfig 看兩個出來的ip一樣否

如圖,重新獲取的ip是我們上面重新設置的范圍內的,dns解析也是同步的

測試成功!

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

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

相關文章

【手把手搓組件庫】從零開始實現Element Plus--組件開發

從零開始實現Element Plus--組件開發 nvmnvm的作用:nvm的使用方法 需求分析提示詞Kimi 生成產品需求文檔kimi 生成測試用例 初始化 vitest完善 Button 組件1、定義 types.ts2、Button.vue 引入 types.ts3、添加Button樣式點擊事件 添加節流添加 Icon 集成 StoryBook…

C++第十九彈---string模擬實現(下)

?個人主頁: 熬夜學編程的小林 💗系列專欄: 【C語言詳解】 【數據結構詳解】【C詳解】 目錄 1、修改操作 2、迭代器操作 3、字符串操作 4、非成員函數重載操作 總結 1、修改操作 1、string& operator (const char* s); //尾部插入…

【Text2SQL 論文】SeaD:使用 Schema-aware 去噪訓練的 end2end 的 Text2SQL

論文:SeaD: End-to-end Text-to-SQL Generation with Schema-aware Denoising ?? NAACL 2022, arXiv:2105.07911 本論文提出 SeaD 模型,使用 schema-aware 的去噪方法來訓練一個 end2end、seq2seq 的 Transformer 模型來實現 Text2SQL。 一、論文速讀…

C++系列-static成員

🌈個人主頁:羽晨同學 💫個人格言:“成為自己未來的主人~” 概念 聲明為static的類成員稱為類的靜態成員,用static修飾的成員變量,稱之為靜態成員變量,用static修飾的成員函數,稱之為靜態成…

stm32學習-流水燈

接線 注意:LED燈長一點的引腳是正極。 配置GPIO 1.使用RCC開啟GPIO時鐘 void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState); void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState); void RCC_APB1Perip…

Stanford斯坦福 CS 224R: 深度強化學習 (2)

實用深度強化學習實現技術 強化學習(RL)是一種通過智能體與環境交互來學習最優決策的機器學習范式。而深度強化學習(DRL)則將深度學習技術引入RL領域,利用深度神經網絡強大的函數擬合能力來處理高維觀察空間,取得了顯著的成功。本章我們將重點介紹一種經典的DRL算法:Q-Learnin…

【Qt 學習筆記】Qt窗口 | 菜單欄 | QMenuBar的使用及說明

博客主頁:Duck Bro 博客主頁系列專欄:Qt 專欄關注博主,后期持續更新系列文章如果有錯誤感謝請大家批評指出,及時修改感謝大家點贊👍收藏?評論? Qt窗口 | 菜單欄 | QMenuBar的使用及說明 文章編號:Qt 學習…

第20屆文博會:“特別呈現”—周瑛瑾雷米·艾融雙個展,著名美術評論家,批評家彭德教授對周瑛瑾作品進行評論

周瑛瑾不是學院派藝術家,但在彩墨畫領域的天賦超出中國八大美院的同類型畫家。相比具有批判意識的當代藝術,他的彩墨藝術如同我們這個苦難世界的創可貼和安慰劑。當我面對他的彩墨畫,首先是驚艷,隨之想到屈原的離騷,還…

無源相控陣雷達

什么是無源相控陣雷達 無源相控陣雷達(Passive Electronically Scanned Array Radar,簡稱PESA雷達)是一種雷達系統。這里的“無源”并未指其不發射信號,而是指其陣列單元不會產生并發射信號,其特點在于天線表面的陣列…

Vue與React、Angular的比較

Vue、React和Angular是前端開發中三個流行的JavaScript框架,它們各自具有不同的特點、優勢和適用場景。以下是對這三個框架的比較: 1. 基本概念 Vue:Vue是一套用于構建用戶界面的漸進式框架,其核心庫專注于視圖層,易…

[CISCN 2024] Crypto部分復現

文章目錄 OvOez_rsacheckin淺記一下 遲來的文章 OvO 題目描述: from Crypto.Util.number import * from secret import flagnbits 512 p getPrime(nbits) q getPrime(nbits) n p * q phi (p-1) * (q-1) while True:kk getPrime(128)rr kk 2e 65537 kk …

【三維修復、分割與編輯】InFusion、Bootstrap 3D、GaussianGrouping、GaussianEditor等(論文總結)

提示: 文章目錄 前言一、InFusion:擴散模型助力,效率提高20倍!(2024)1. 摘要2. 算法3. 效果 二、2D Gaussian Splatting三、Bootstrap 3D:從擴散模型引導三維重建1.摘要2.相關工作3.方法1.Boostrapping by Diffusion 通過擴散模型…

學習存儲協議的利器,聊聊tcpdump和Wireshark

數據存儲技術分為多個方面,包括數據持久化、數據映射、數據壓縮和通信協議等等。其中通信協議是數據存儲技術中非常重要的一部分,正是通信協議使得計算節點可以訪問存儲設備。同時,也正是不同的協議讓存儲系統呈現不同的形態。 如下圖所示,通過iSCSI協議,可以將存儲端的存…

使用std::vector<char>作為數據緩沖區分析

文章目錄 0. 引言1. 內存分配分析2. 性能影響3. 性能優化策略4. 實際性能測試5. 優化建議6. 總結額外建議 0. 引言 在 C 網絡編程中&#xff0c;std::vector<char> 常被用作數據緩沖區。與普通數組相比&#xff0c;std::vector 的內存分配在堆上&#xff0c;而非棧上&am…

【JVM實踐與應用】

JVM實踐與應用 1.類加載器(加載、連接、初始化)1.1 類加載要完成的功能1.2 加載類的方式1.3 類加載器1.4 雙親委派模型1.5自定義ClassLoader1.6 破壞雙親委派模型2.1 類連接主要驗證內容2.2 類連接中的解析2.3 類的初始化3.1 類的初始化時機3.2 類的初始化機制和順序3.2 類的卸…

C從零開始實現貪吃蛇大作戰

個人主頁&#xff1a;星紜-CSDN博客 系列文章專欄 : C語言 踏上取經路&#xff0c;比抵達靈山更重要&#xff01;一起努力一起進步&#xff01; 有關Win32API的知識點在上一篇文章&#xff1a; 目錄 一.地圖 1.控制臺基本介紹 2.寬字符 1.本地化 2.類項 3.setlocale函…

解釋Vue中transition的理解

在Vue中&#xff0c;transition組件用于在元素或組件插入、更新或移除時應用過渡效果。Vue 2和Vue 3都提供了transition組件&#xff0c;但兩者之間有一些差異和更新。以下是關于Vue 2和Vue 3中transition組件的理解&#xff1a; Vue 2中的transition 在Vue 2中&#xff0c;t…

Golang 如何使用 gorm 存取帶有 emoji 表情的數據

Golang 如何使用 gorm 存取帶有 emoji 表情的數據 結論&#xff1a;在 mysql 中盡量使用 utf8mb4&#xff0c;不要使用 utf8。db報錯信息&#xff1a;Error 1366 (HY000): Incorrect string value: \\xE6\\x8C\\xA5\\xE7\\xAC\\xA6...根本原因&#xff1a;emoji 4個字節&#x…

MybatisPlus分頁查詢

分頁查詢controller寫法 public PageResult findByList(RequestBody UserDTO userDTO) {// 分頁IPage<User> page new Page(UserDTO.getPageNumber(), UserDTO.getPageSize());// 條件構造器QueryWrapper queryWrapper new QueryWrapper();queryWrapper.eq("user…

【深度學習】第1章

概論: 機器學習是對研究問題進行模型假設,利用計算機從訓練數據中學習得到模型參數,并最終對數據進行預測和分析,其基礎主要是歸納和統計。 深度學習是一種實現機器學習的技術,是機器學習重要的分支。其源于人工神經網絡的研究。深度學習的模型結構是一種含多隱層的神經…