-
當前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
chainnode(chainnode下載)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于chainnode的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
ChatGPT國內(nèi)免費在線使用,能給你生成想要的原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
你只需要給出你的關(guān)鍵詞,它就能返回你想要的內(nèi)容,越精準,寫出的就越詳細,有微信小程序端、在線網(wǎng)頁版、PC客戶端,官網(wǎng):https://ai.de1919.com
本文目錄:
一、存儲多個鏈表頭指針的指針數(shù)組該怎么樣做?
typedef struct Node
{
int b;
char a[12];
struct Node *next;
}LinkNode;
對這樣一個結(jié)構(gòu)
你可以 這樣定義一個chain數(shù)組來存放LinkNode指針
LinkNode (*chain)[10];
chain[0]指向第一個LinkNode結(jié)構(gòu)(當然 指向的是頭結(jié)點)
chain[1]指向第一個LinkNode結(jié)構(gòu)
依次類推
二、關(guān)于電腦部件的英語單詞,我急用!
PC:個人計算機Personal Computer
·CPU:中央處理器Central Processing Unit
·CPU Fan:中央處理器的“散熱器”(Fan)
·MB:主機板MotherBoard
·RAM:內(nèi)存Random Access Memory,以PC-代號劃分規(guī)格,如PC-133,PC-1066,PC-2700
·HDD:硬盤Hard Disk Drive
·FDD:軟盤Floopy Disk Drive
·CD-ROM:光驅(qū)Compact Disk Read Only Memory
·DVD-ROM:DVD光驅(qū)Digital Versatile Disk Read Only Memory
·CD-RW:刻錄機Compact Disk ReWriter
·VGA:顯示卡(顯示卡正式用語應(yīng)為Display Card)
·AUD:聲卡(聲卡正式用語應(yīng)為Sound Card)
·LAN:網(wǎng)卡(網(wǎng)卡正式用語應(yīng)為Network Card)
·MODM:數(shù)據(jù)卡或調(diào)制解調(diào)器Modem
·HUB:集線器
·WebCam:網(wǎng)絡(luò)攝影機
·Capture:影音采集卡
·Case:機箱
·Power:電源
·Moniter:屏幕,CRT為顯像管屏幕,LCD為液晶屏幕
·USB:通用串行總線Universal Serial Bus,用來連接外圍裝置
·IEEE1394:新的高速序列總線規(guī)格Institute of Electrical and Electronic Engineers
·Mouse:鼠標,常見接口規(guī)格為PS/2與USB
·KB:鍵盤,常見接口規(guī)格為PS/2與USB
·Speaker:喇叭
·Printer:打印機
·Scanner:掃描儀
·UPS:不斷電系統(tǒng)
·IDE:指IDE接口規(guī)格Integrated Device
Electronics,IDE接口裝置泛指采用IDE接口的各種設(shè)備
·SCSI:指SCSI接口規(guī)格Small Computer System
Interface,SCSI接口裝置泛指采用SCSI接口的各種設(shè)備
·GHz:(中央處理器運算速度達)Gega赫茲/每秒
·FSB:指“前端總線(Front Side Bus)”頻率,以MHz為單位
·ATA:指硬盤傳輸速率AT
Attachment,ATA-133表示傳輸速率為133MB/sec
·AGP:顯示總線Accelerated Graphics
Port,以2X,4X,8X表示傳輸頻寬模式
·PCI:外圍裝置連接端口Peripheral Component Interconnect
·ATX:指目前電源供應(yīng)器的規(guī)格,也指主機板標準大小尺寸
·BIOS:硬件(輸入/輸出)基本設(shè)置程序Basic Input Output System
·CMOS:儲存BIOS基本設(shè)置數(shù)據(jù)的記憶芯片Complementary Metal-Oxide Semiconductor
·POST:開機檢測Power On Self Test
·OS:操作系統(tǒng)Operating System
·Windows:窗口操作系統(tǒng),圖形接口
·DOS:早期文字指令接口的操作系統(tǒng)
·fdisk:“規(guī)劃硬盤扇區(qū)”-DOS指令之一
·format:“硬盤扇區(qū)格式化”-DOS指令之一
·setup.exe:“執(zhí)行安裝程序”-DOS指令之一
·Socket:插槽,如CPU插槽種類有SocketA,Socket478等等
·Pin:針腳,如ATA133硬盤排線是80Pin,如PC2700內(nèi)存模塊是168Pin
·Jumper:跳線(短路端子)
·bit:位(0與1這兩種電路狀態(tài)), 計算機數(shù)據(jù)最基本的單位
·Byte:字節(jié),等于8 bit(八個位的組合,共有256種電路狀態(tài)),計算機一個文字以8 bit來表示
·KB:等于1024 Byte
·MB:等于1024 KB
·GB:等于1024 MB
Active-matrix主動距陳
Adapter cards適配卡
Advanced application高級應(yīng)用
Analytical graph分析圖表
Analyze分析
Animations動畫
Application software 應(yīng)用軟件
Arithmetic operations算術(shù)運算
Audio-output device音頻輸出設(shè)備
Access time存取時間
access存取
accuracy準確性
ad network cookies廣告網(wǎng)絡(luò)信息記錄軟件
Add-ons附軟件
Address地址
Agents代理
Analog signals模擬信號
Applets程序
Asynchronous communications port異步通信端口
Attachment附件
B
Bar code條形碼
Bar code reader條形碼讀卡器
Basic application基礎(chǔ)程序
Binary coding schemes二進制譯碼方案
Binary system二進制系統(tǒng)
Bit比特
Browser瀏覽器
Bus line總線
Backup tape cartridge units備份磁帶盒單元
Bandwidth帶寬
Bluetooth藍牙
Broadband寬帶
Browser瀏覽器
Business-to-business企業(yè)對企業(yè)電子商務(wù)
Business-to-consumer企業(yè)對消費者
Bus總線
C
Cables連線
Cell單元箱
Chain printer鏈式打印機
Character and recognition device字符標識識別設(shè)備
Chart圖表
Chassis支架
Chip芯片
Clarity清晰度
Closed architecture封閉式體系結(jié)構(gòu)
Column列
Combination key結(jié)合鍵
computer competency計算機能力
connectivity連接,結(jié)點
Continuous-speech recognition system連續(xù)語言識別系統(tǒng)
Control unit操縱單元
Cordless or wireless mouse無線鼠標
Cable modems有線調(diào)制解調(diào)器
carpal tunnel syndrome腕骨神經(jīng)綜合癥
CD-ROM可記錄光盤
CD-RW可重寫光盤
CD-R可記錄壓縮光盤
Channel信道
Chat group談話群組
chlorofluorocarbons(CFCs) ]氯氟甲烷
Client客戶端
Coaxial cable同軸電纜
cold site冷戰(zhàn)
Commerce servers商業(yè)服務(wù)器
Communication channel信道
Communication systems信息系統(tǒng)
Compact disc rewritable
Compact disc光盤
computer abuse amendments act of 19941994計算機濫用法案
computer crime計算機犯罪
computer ethics計算機道德
computer fraud and abuse act of 1986計算機欺詐和濫用法案
computer matching and privacy protection act of 1988計算機查找和隱私保護法案
Computer network計算機網(wǎng)絡(luò)
computer support specialist計算機支持專家
computer technician計算機技術(shù)人員
computer trainer計算機教師
Connection device連接設(shè)備
Connectivity連接
Consumer-to-consumer個人對個人
cookies-cutter programs信息記錄截取程序
cookies信息記錄程序
cracker解密高手
cumulative trauma disorder積累性損傷錯亂
Cybercash電子現(xiàn)金
Cyberspace計算機空間
cynic憤世嫉俗者
D
Database數(shù)據(jù)庫
database files數(shù)據(jù)庫文件
Database manager數(shù)據(jù)庫管理
Data bus數(shù)據(jù)總線
Data projector數(shù)碼放映機
Desktop system unit臺式電腦系統(tǒng)單元
Destination file目標文件
Digital cameras數(shù)碼照相機
Digital notebooks數(shù)字筆記本
Digital bideo camera數(shù)碼攝影機
Discrete-speech recognition system不連續(xù)語言識別系統(tǒng)
Document文檔
document files文檔文件
Dot-matrix printer點矩陣式打印機
Dual-scan monitor雙向掃描顯示器
Dumb terminal非智能終端
data security數(shù)據(jù)安全
Data transmission specifications數(shù)據(jù)傳輸說明
database administrator數(shù)據(jù)庫管理員
Dataplay數(shù)字播放器
Demodulation解調(diào)
denial of service attack拒絕服務(wù)攻擊
Dial-up service撥號服務(wù)
Digital cash數(shù)字現(xiàn)金
Digital signals數(shù)字信號
Digital subscriber line數(shù)字用戶線路
Digital versatile disc數(shù)字化通用磁盤
Digital video disc數(shù)字化視頻光盤
Direct access直接存取
Directory search目錄搜索
disaster recovery plan災(zāi)難恢復(fù)計劃
Disk caching磁盤驅(qū)動器高速緩存
Diskette磁盤
Disk磁碟
Distributed data processing system分部數(shù)據(jù)處理系統(tǒng)
Distributed processing分布處理
Domain code域代碼
Downloading下載
DVD 數(shù)字化通用磁盤
DVD-R 可寫DVD
DVD-RAM DVD隨機存取器
DVD-ROM 只讀DVD
E
e-book電子閱讀器
Expansion cards擴展卡
end user終端用戶
e-cash電子現(xiàn)金
e-commerce電子商務(wù)
electronic cash電子現(xiàn)金
electronic commerce電子商務(wù)
electronic communications privacy act of1986電子通信隱私法案
encrypting加密術(shù)
energy star能源之星
Enterprise computing企業(yè)計算化
environment環(huán)境
Erasable optical disks可擦除式光盤
ergonomics人類工程學(xué)
ethics道德規(guī)范
External modem外置調(diào)制解調(diào)器
extranet企業(yè)外部網(wǎng)
F
Fax machine傳真機
Field域
Find搜索
FireWire port port火線端口
Firmware固件
Flash RAM閃存
Flatbed scanner臺式掃描器
Flat-panel monitor純平顯示器
floppy disk軟盤
Formatting toolbar格式化工具條
Formula公式
Function函數(shù)
fair credit reporting act of 1970公平信用報告法案
Fiber-optic cable光纖電纜
File compression文件壓縮
File decompression文件解壓縮
filter過濾
firewall防火墻
firewall防火墻
Fixed disk固定硬盤
Flash memory閃存
Flexible disk可折疊磁盤
Floppies磁盤
Floppy disk軟盤
Floppy-disk cartridge磁盤盒
Formatting格式化
freedom of information act of 1970信息自由法案
frustrated受挫折
Full-duplex communication全雙通通信
G
General-purpose application通用運用程序
Gigahertz千兆赫
Graphic tablet繪圖板
green pc綠色個人計算機
H
handheld computer手提電腦
Hard copy硬拷貝
hard disk硬盤
hardware硬件
Help幫助
Host computer主機
Home page主頁
Hyperlink超鏈接
hacker黑客
Half-duplex communication半雙通通信
Hard disk硬盤
Hard-disk cartridge硬盤盒
Hard-disk pack硬盤組
Head crash磁頭碰撞
header標題
help desk specialist幫助辦公專家
helper applications幫助軟件
Hierarchical network層次型網(wǎng)絡(luò)
history file歷史文件
hits匹配記錄
horizontal portal橫向用戶
hot site熱戰(zhàn)
Hybrid network混合網(wǎng)絡(luò)
hyperlinks超連接
I
Image capturing device圖像獲取設(shè)備
information technology信息技術(shù)
Ink-jet printer墨水噴射印刷機
Integrated package綜合性組件
Intelligent terminal智能終端設(shè)備
Intergrated circuit集成電路
Interface cards接口卡
Internal modem內(nèi)部調(diào)制解調(diào)器
internet telephony網(wǎng)絡(luò)電話
internet terminal互聯(lián)網(wǎng)終端
Identification識別
i-drive網(wǎng)絡(luò)硬盤驅(qū)動器
illusion of anonymity匿名幻想
index search索引搜索
information pushers信息推送器
initializing 初始化
instant messaging計時信息
internal hard disk內(nèi)置硬盤
Internal modem內(nèi)部調(diào)制解調(diào)器
Internet hard drive 網(wǎng)絡(luò)硬盤驅(qū)動器
intranet企業(yè)內(nèi)部網(wǎng)
J
joystick操縱桿
K
keyword search關(guān)鍵字搜索
L
laser printer激光打印機
Layout files版式文件
Light pen光筆
Locate定位
Logical operations邏輯運算
Lands凸面
Line of sight communication視影通信
Low bandwidth低帶寬
lurking潛伏
M
Main board主板
Mark sensing標志檢測
Mechanical mouse機械鼠標
Memory內(nèi)存
Menu菜單
Menu bar菜單條
Microprocessor微處理器
Microseconds微秒
Modem card調(diào)制解調(diào)器
Monitor顯示器
Motherboard主板
Mouse 鼠標
Multifunctional device多功能設(shè)備
Magnetic tape reels磁帶卷
Magnetic tape streamers磁帶條
mailing list郵件列表
Medium band媒質(zhì)帶寬
metasearch engine整合搜索引擎
Microwave微波
Modem解調(diào)器
Modulation解調(diào)
由于不能寫那么多只好到這了/
N
Net PC網(wǎng)絡(luò)計算機
Network adapter card網(wǎng)卡
Network personal computer網(wǎng)絡(luò)個人電腦
Network terminal 網(wǎng)絡(luò)終端
Notebook computer筆記本電腦
Notebook system unit筆記本系統(tǒng)單元
Numeric entry數(shù)字輸入
na?ve天真的人
national information infrastructure protection act of1996國際信息保護法案
national service provider全國性服務(wù)供應(yīng)商
Network architecture網(wǎng)絡(luò)體系結(jié)構(gòu)
Network bridge網(wǎng)橋
Network gateway網(wǎng)關(guān)
network manager網(wǎng)絡(luò)管理員
newsgroup新聞組
no electronic theft act of1997無電子盜竊法
Node節(jié)點
Nonvolatile storage非易失性存儲
O
Object embedding對象嵌入
Object linking目標鏈接
Open architecture開放式體系結(jié)構(gòu)
Optical disk光盤
Optical mouse光電鼠標
Optical scanner光電掃描儀
Outline大綱
off-line browsers離線瀏覽器
Online storage聯(lián)機存儲
P
palmtop computer掌上電腦
Parallel ports并行端口
Passive-matrix被動矩陣
PC card個人計算機卡
Personal laser printer個人激光打印機
Personal video recorder card個人視頻記錄卡
Photo printer照片打印機
Pixel像素
Platform scanner平版式掃描儀
Plotter繪圖儀
Plug and play即插即用
Plug-in boards插件卡
Pointer指示器
Pointing stick指示棍
Port端口
Portable scanner便攜式掃描儀
Presentation files演示文稿
Presentation graphics電子文稿程序
Primary storage主存
Procedures規(guī)程
Processor處理機
Programming control lanugage程序控制語言
Packets數(shù)據(jù)包
Parallel data transmission平行數(shù)據(jù)傳輸
Peer-to-peer network system得等網(wǎng)絡(luò)系統(tǒng)
person-person auction site個人對個人拍賣站點
physical security物理安全
Pits凹面
plug-in插件程序
Polling輪詢
privacy隱私權(quán)
proactive主動地
programmer程序員
Protocols協(xié)議
provider供應(yīng)商
proxy server代理服務(wù)
pull products推取程序
push products推送程序
R
RAM cache隨機高速緩沖器
Range范圍
Record記錄
Relational database關(guān)系數(shù)據(jù)庫
Replace替換
Resolution分辨率
Row行
Read-only只讀
Reformatting重組
regional service provider區(qū)域性服務(wù)供應(yīng)商
repetitive motion injury反復(fù)性動作損傷
reverse directory反向目錄
right to financial privacy act of 1979財產(chǎn)隱私法案
Ring network環(huán)形網(wǎng)絡(luò)
S
Scanner掃描器
Search查找
Secondary storage device助存儲設(shè)備
Semiconductor半導(dǎo)體
Serial ports串行端口
Server服務(wù)器
Shared laser printer共享激光打印機
Sheet表格
Silicon chip硅片
Slots插槽
Smart card智能卡
Soft copy軟拷貝
Software suite軟件協(xié)議
Sorting排序分類
Source file源文件
Special-purpose application專用文件
Spreadsheet電子數(shù)據(jù)表
Standard toolbar標準工具欄
Supercomputer巨型機
System cabine 系統(tǒng)箱
System clock時鐘
System software系統(tǒng)軟件
Satellite/air connection services衛(wèi)星無線連接服務(wù)
search engines搜索引擎
search providers搜索供應(yīng)者
search services 搜索服務(wù)器
Sectors扇區(qū)
security安全
Sending and receiving devices發(fā)送接收設(shè)備
Sequential access順序存取
Serial data transmission單向通信
signature line簽名檔
snoopware監(jiān)控軟件
software copyright act of1980軟件版權(quán)法案
software piracy軟件盜版
Solid-state storage固態(tài)存儲器
specialized search engine專用搜索引擎
spiders網(wǎng)頁爬蟲
spike尖峰電壓
Star network星型網(wǎng)
Strategy方案
subject主題
subscription address預(yù)定地址
Superdisk超級磁盤
surfing網(wǎng)上沖浪
surge protector浪涌保護器
systems analyst系統(tǒng)分析師
T
Table二維表
Telephony電話學(xué)
Television boards電視擴展卡
Terminal 終端
Template模板
Text entry文本輸入
Thermal printer 熱印刷
Thin client瘦客
Toggle key觸發(fā)鍵
Toolbar工具欄
Touch screen觸摸屏
Trackball追蹤球
TV tuner card電視調(diào)諧卡
Two-state system雙狀態(tài)系統(tǒng)
technical writer技術(shù)協(xié)作者
technostress重壓技術(shù)
telnet遠程登錄
Time-sharing system分時系統(tǒng)
Topology拓撲結(jié)構(gòu)
Tracks磁道
traditional cookies傳統(tǒng)的信息記錄程序
Twisted pair雙絞線
U
Unicode統(tǒng)一字符標準
uploading上傳
usenet世界性新聞組網(wǎng)絡(luò)
V
Virtual memory虛擬內(nèi)存
Video display screen視頻顯示屏
Voice recognition system聲音識別系統(tǒng)
vertical portal縱向門戶
video privacy protection act of 1988視頻隱私權(quán)保護法案
virus checker病毒檢測程序
virus病毒
Voiceband音頻帶寬
Volatile storage易失性存儲
voltage surge沖擊性電壓
W
Wand reader 條形碼讀入
Web 網(wǎng)絡(luò)
Web appliance 環(huán)球網(wǎng)設(shè)備
Web page網(wǎng)頁
Web site address網(wǎng)絡(luò)地址
Web terminal環(huán)球網(wǎng)終端
Webcam攝像頭
What-if analysis假定分析
Wireless revolution無線革命
Word字長
Word processing文字處理
Word wrap自動換行
Worksheet file 工作表文件
web auctions網(wǎng)上拍賣
web broadcasters網(wǎng)絡(luò)廣播
web portals門戶網(wǎng)站
web sites網(wǎng)站
web storefront creation packages網(wǎng)上商店創(chuàng)建包
web storefronts網(wǎng)上商店
web utilities網(wǎng)上應(yīng)用程序
web-downloading utilities網(wǎng)頁下載應(yīng)用程序
webmaster web站點管理員
web萬維網(wǎng)
Wireless modems無線調(diào)制解調(diào)器
wireless service provider無線服務(wù)供應(yīng)商
world wide web萬維網(wǎng)
worm蠕蟲病毒
Write-protect notch寫保護口
其他縮寫
DVD digital bersatile 數(shù)字化通用光盤
IT ingormation technology信息技術(shù)
CD compact disc 壓縮盤
PDA personal digital assistant個人數(shù)字助理
RAM random access memory隨機存儲器
WWW World Wide Web 萬維網(wǎng)
DBMS database management system數(shù)據(jù)庫管理系統(tǒng)
HTML Hypertext Markup Language超文本標示語言
OLE object linking and embedding對象鏈接潛入
SQL structured query language結(jié)構(gòu)化查詢語言
URL uniform resouice locator統(tǒng)一資源定位器
AGP accelerated graphics port加速圖形接口
ALU arithmetic-logic unit算術(shù)邏輯單元
CPU central processing unit中央處理器
CMOS complementary metal-oxide semiconductor互補金屬氧化物半導(dǎo)體
CISC complex instruction set computer復(fù)雜指令集計算機
HPSB high performance serial bus高性能串行總線
ISA industry standard architecture工業(yè)標準結(jié)構(gòu)體系
PCI peripheral component interconnect外部設(shè)備互連總線
PCMCIA Personal Memory Card International Association個人計算機存儲卡國際協(xié)會
RAM random-access memory隨機存儲器
ROM read-only memory只讀存儲器
USB universal serial bus通用串行總線
CRT cathode-ray tube陰極射線管
HDTV high-definition television高清晰度電視
LCD liquid crystal display monitor液晶顯示器
MICRmagnetic-ink character recognition磁墨水字符識別器
OCR optical-character recognition光電字符識別器
OMR optical-mark recognition光標閱讀器
TFT thin film transistor monitor薄膜晶體管顯示器
其他
Zip disk壓縮磁盤
Domain name system(DNS)域名服務(wù)器
file transfer protocol(FTP)文件傳送協(xié)議
hypertext markup language(HTML)超文本鏈接標識語言
Local area network(LAN)局域網(wǎng)
internet relay chat(IRC)互聯(lián)網(wǎng)多線交談
Metropolitan area network(MAN)城域網(wǎng)
Network operation system(NOS)網(wǎng)絡(luò)操作系統(tǒng)
uniform resource locator(URL)統(tǒng)一資源定位器
Wide area network(WAN)廣域網(wǎng)
三、建立雙向鏈表 實現(xiàn)對雙向鏈表的插入 刪除操作·
#include <iostream>
using namespace std;
struct Node
{
int data; //節(jié)點中的數(shù)據(jù) 結(jié)構(gòu)體Node的成員變量
Node* next; //指向下一節(jié)點的指針,習(xí)慣用next命名 結(jié)構(gòu)體Node的成員變量
Node( const int& d=int() ) //結(jié)構(gòu)體也可以有構(gòu)造函數(shù) ,d=T()來指定默認值
:data(d),next(NULL) //用構(gòu)造函數(shù)來初始化成員變量data和指針
{} //所有數(shù)據(jù)類型,默認初始化都為0,這里data默認初始化為0
};
class Chain //封裝鏈表
{
private: //數(shù)據(jù)成員通常都是private的
Node* head; //首先,我們要一個Node型的指針來保存鏈表的第一個節(jié)點;
int length; //再用一個整型變量來記錄當前鏈表內(nèi)的節(jié)點數(shù)
public:
Chain() //在構(gòu)造函數(shù)里建立一個空鏈表,即head指向NULL
:head(NULL),length(0){} //節(jié)點數(shù)為0;
//當我們在類中定義函數(shù)時(不是聲明),相當于在前面加上一個inline修飾
void delall() //這個函數(shù)用來刪除鏈表中的所有節(jié)點
{
Node* pdel; //定義一個Node型指針用來保存要刪除的節(jié)點
while( head != NULL ) //當head的指向不為NULL時,就是鏈表中還存在節(jié)點
{
pdel = head; //這里備份head的當前指向節(jié)點
head = head->next; //把head的指向改變?yōu)橄乱还?jié)點
delete pdel; //把head的原指向給刪除掉
} //如此一直下去,尾節(jié)點的next肯定是指向NULL的,那刪除最后一個的時候
//head就被賦值為NULL,不滿足循環(huán)條件,退出循環(huán)
length = 0; //把節(jié)點數(shù)歸零
}
~Chain(){ delall(); } //在析構(gòu)函數(shù)中調(diào)用delall函數(shù),來完成對象銷毀時清理工作
//這樣一個鏈表必須具備的功能就實現(xiàn)了。下面我們來實現(xiàn)他的增、刪、查、改功能
Node*& getpoint( int position ) //對鏈表的操作,其實全部通過指針來實現(xiàn)的,
{ //那就需要定義一個函數(shù)來返回當前節(jié)點的指針(引用)
if( position<0 || position>length ) //對節(jié)點編號進行合法檢查
position = length; //如果是非法節(jié)點編號,那么就把他修改為最后一個節(jié)點編號
if( position==0 ) //如果編號為0,那就是第一個節(jié)點了,
return head; //直接返回head就是指向第一個節(jié)點的,注意返回的是head本身
Node* head_bak = head; //如果編號合法并且不是第一個節(jié)點,就開始遍歷鏈表
for( int i=1; i < position; i++ ) //為什么不直接用head
{ //注意這里修改的是成員變量。你把head改了,以后到哪找鏈表
//我們都是通過head一個一個的往下找節(jié)點的。head被修改了。后果顯而易見
head_bak = head_bak->next; //通過備份的指針來遍歷到指定編號前一個節(jié)點
} //i不從0開始,減少運算,提高效率
return head_bak->next; //這里如果返回head_bak的話。那就是需要的前一個節(jié)點了
}
void insert( const int& data, int position ) //如果不修改參數(shù)的話,使用引用做參數(shù)的時候,最好加上const
{
Node* pin = new Node(data); //需要調(diào)用Node的構(gòu)造函數(shù)
pin->next = getpoint(position); //把指定位置的指針返回給新節(jié)點的指針
//也就是說,把新的節(jié)點的next指向原來這個位置的節(jié)點。
getpoint(position) = pin; //getpoint()返回的是引用,我們可以直接修改它
//前面的一個節(jié)點的next指向我們新的節(jié)點。
length++; //鏈表的節(jié)點數(shù)+1
}
int del( const int& data )
{
int position = find(data);
if( position !=-1 ) //-1代表沒找到
{
Node* &pnext = getpoint(position); //用getponit()來獲得指定節(jié)點的指向信息
Node* pbak = pnext; //用來備份節(jié)點的指向信息
pnext = pnext->next; //把next指向改為下下個節(jié)點。
delete pbak;
length--;
}
return position;
}
//把<<重載,直接輸出鏈表
friend ostream& operator<<( ostream& os, const Chain& oc )
{
Node* phead = oc.head;
os << "[ ";
while( phead !=NULL ) //判斷是否到尾節(jié)點
{
os << phead->data << ' ';
phead = phead->next;
}
os << "] "; //這個函數(shù),應(yīng)該沒什么好說的了
return os; //如果還是不理解,當成固定模式去背吧
}
};
void show()
{
cout << "******************************" << endl;
cout << "2- 向鏈表內(nèi)添加節(jié)點(數(shù)據(jù),節(jié)點號)" << endl;
cout << "3- 刪除鏈表內(nèi)某一個數(shù)據(jù)(數(shù)據(jù))" << endl;
cout << "0- 退出" << endl;
cout << "******************************" << endl;
}
int main()
{
Chain link;
int position, data, choice, data_new;
while( choice != 0 )
{
show();
cout << "請選擇:";
cin >> choice;
switch ( choice )
{
case 2 :
cout << "請輸入要插入的數(shù)據(jù)和插入位置:" ;
cin >> data >> position;
link.insert( data,position );
cout << link << endl;
break;
case 3 :
cout << "請輸入要刪除的數(shù)據(jù):";
cin >> data;
link.del( data );
cout << link << endl;
break;
default :
break;
}
}
}
四、阿里sentinel源碼解析
sentinel是阿里巴巴開源的流量整形(限流、熔斷)框架,目前在github擁有15k+的star,sentinel以流量為切入點,從流量控制、熔斷降級、系統(tǒng)負載保護等多個維度保護服務(wù)的穩(wěn)定性。
我們以sentinel的主流程入手,分析sentinel是怎么搜集流量指標,完成流量整形的。
首先我們先看一個sentinel的簡單使用demo,只需要調(diào)用SphU.entry獲取到entry,然后在完成業(yè)務(wù)方法之后調(diào)用entry.exit即可。
SphU.entry會調(diào)用Env.sph.entry,將name和流量流向封裝成StringResourceWrapper,然后繼續(xù)調(diào)用entry處理。
進入CtSph的entry方法,最終來到entryWithPriority,調(diào)用InternalContextUtil.internalEnter初始化ThreadLocal的Context,然后調(diào)用lookProcessChain初始化責任鏈,最終調(diào)用chain.entry進入責任鏈進行處理。
InternalContextUtil.internalEnter會調(diào)用trueEnter方法,主要是生成DefaultNode到contextNameNodeMap,然后生成Context設(shè)置到contextHolder的過程。
lookProcessChain已經(jīng)做過優(yōu)化,支持spi加載自定義的責任鏈bulider,如果沒有定義則使用默認的DefaultSlotChainBuilder進行加載。默認加載的slot和順序可見鎮(zhèn)樓圖,不再細說。
最后來到重頭戲chain.entry進入責任鏈進行處理,下面會按照順序分別對每個處理器進行分析。
首先來到NodeSelectorSlot,主要是獲取到name對應(yīng)的DefaultNode并緩存起來,設(shè)置為context的當前節(jié)點,然后通知下一個節(jié)點。
下一個節(jié)點是ClusterBuilderSlot,繼續(xù)對DefaultNode設(shè)置ClusterNode與OriginNode,然后通知下一節(jié)點。
下一個節(jié)點是LogSlot,只是單純的打印日志,不再細說。
下一個節(jié)點是StatisticSlot,是一個后置節(jié)點,先通知下一個節(jié)點處理完后,
1.如果沒有報錯,則對node、clusterNode、originNode、ENTRY_NODE的線程數(shù)、通過請求數(shù)進行增加。
2.如果報錯是PriorityWaitException,則只對線程數(shù)進行增加。
3.如果報錯是BlockException,設(shè)置報錯到node,然后對阻擋請求數(shù)進行增加。
4.如果是其他報錯,設(shè)置報錯到node即可。
下一個節(jié)點是FlowSlot,這個節(jié)點就是重要的限流處理節(jié)點,進入此節(jié)點是調(diào)用checker.checkFlow進行限流處理。
來到FlowRuleChecker的checkFlow方法,調(diào)用ruleProvider.apply獲取到資源對應(yīng)的FlowRule列表,然后遍歷FlowRule調(diào)用canPassCheck校驗限流規(guī)則。
canPassCheck會根據(jù)rule的限流模式,選擇集群限流或者本地限流,這里分別作出分析。
passLocalCheck是本地限流的入口,首先會調(diào)用selectNodeByRequesterAndStrategy選出限流的node,然后調(diào)用canPass進行校驗。
selectNodeByRequesterAndStrategy會根據(jù)以下規(guī)則選中node。
1.strategy是STRATEGY_DIRECT。
1.1.limitApp不是other和default,并且等于orgin時,選擇originNode。
1.2.limitApp是other,選擇originNode。
1.3.limitApp是default,選擇clusterNode。
2.strategy是STRATEGY_RELATE,選擇clusterNode。
3.strategy是STRATEGY_CHAIN,選擇node。
選擇好對應(yīng)的node后就是調(diào)用canPass校驗限流規(guī)則,目前sentinel有三種本地限流規(guī)則:普通限流、勻速限流、冷啟動限流。
普通限流的實現(xiàn)是DefaultController,就是統(tǒng)計當前的線程數(shù)或者qps加上需要通過的數(shù)量有沒有大于限定值,小于等于則直接通過,否則阻擋。
勻速限流的實現(xiàn)是RateLimiterController,使用了AtomicLong保證了latestPassedTime的原子增長,因此停頓的時間是根據(jù)latestPassedTime-currentTime計算出來,得到一個勻速的睡眠時間。
冷啟動限流的實現(xiàn)是WarmUpController,是sentinel中最難懂的限流方式,其實不太需要關(guān)注這些復(fù)雜公式的計算,也可以得出冷啟動的限流思路:
1.當qps已經(jīng)達到溫熱狀態(tài)時,按照正常的添加令牌消耗令牌即可。
2.當qps處于過冷狀態(tài)時,會添加令牌使得算法繼續(xù)降溫。
3.當qps逐漸回升,大于過冷的邊界qps值時,不再添加令牌,慢慢消耗令牌使得逐漸增大單位時間可通過的請求數(shù),讓算法繼續(xù)回溫。
總結(jié)出一點,可通過的請求數(shù)跟令牌桶剩余令牌數(shù)量成反比,以達到冷啟動的作用。
接下來是集群限流,passClusterCheck是集群限流的入口,會根據(jù)flowId調(diào)用clusterSerivce獲取指定數(shù)量的token,然后根據(jù)其結(jié)果判斷是否通過、睡眠、降級到本地限流、阻擋。
接下來看一下ClusterService的處理,會根據(jù)ruleId獲取到對應(yīng)的FlowRule,然后調(diào)用ClusterFlowChecker.acquireClusterToken獲取結(jié)果返回。ClusterFlowChecker.acquireClusterToken的處理方式跟普通限流是一樣的,只是會將集群的請求都集中在一個service中處理,來達到集群限流的效果,不再細說。
FlowSlot的下一個節(jié)點是DegradeSlot,是熔斷處理器,進入時會調(diào)用performChecking,進而獲取到CircuitBreaker列表,然后調(diào)用其tryPass校驗是否熔斷。
來到AbstractCircuitBreaker的tryPass方法,主要是判斷熔斷器狀態(tài),如果是close直接放行,如果是open則會校驗是否到達開啟halfopen的時間,如果成功將狀態(tài)cas成halfopen則繼續(xù)放行,其他情況都是阻攔。
那怎么將熔斷器的狀態(tài)從close變成open呢?怎么將halfopen變成close或者open呢?sentinel由兩種熔斷器:錯誤數(shù)熔斷器ExceptionCircuitBreaker、響應(yīng)時間熔斷器ResponseTimeCircuitBreaker,都分析一遍。
當業(yè)務(wù)方法報錯時會調(diào)用Tracer.traceEntry將報錯設(shè)置到entry上。
當調(diào)用entry.exit時,會隨著責任鏈來到DegradeSlot的exit方法,會遍歷熔斷器列表調(diào)用其onRequestComplete方法。
ExceptionCircuitBreaker的onRequestComplete會記錄錯誤數(shù)和總請求數(shù),然后調(diào)用handleStateChangeWhenThresholdExceeded繼續(xù)處理。
1.當前狀態(tài)是open時,不應(yīng)該由熔斷器底層去轉(zhuǎn)換狀態(tài),直接退出。
2.當前狀態(tài)是halfopen時,如果沒有報錯,則將halfopen變成close,否則將halfopen變成open。
3.當前狀態(tài)時close時,則根據(jù)是否總請求達到了最低請求數(shù),如果達到了話再比較錯誤數(shù)/錯誤比例是否大于限定值,如果大于則直接轉(zhuǎn)換成open。
ExceptionCircuitBreaker的onRequestComplete會記錄慢響應(yīng)數(shù)和總請求數(shù),然后調(diào)用handleStateChangeWhenThresholdExceeded繼續(xù)處理。
1.當前狀態(tài)是open時,不應(yīng)該由熔斷器底層去轉(zhuǎn)換狀態(tài),直接退出。
2.當前狀態(tài)是halfopen時,如果當前響應(yīng)時間小于限定值,則將halfopen變成close,否則將halfopen變成open。
3.當前狀態(tài)時close時,則根據(jù)是否總請求達到了最低請求數(shù),如果達到了話再比較慢請求數(shù)/慢請求比例是否大于限定值,如果大于則直接轉(zhuǎn)換成open。
下一個節(jié)點是AuthoritySlot,權(quán)限控制器,這個控制器就是看當前origin是否被允許進入請求,不允許則報錯,不再細說。
終于來到最后一個節(jié)點SystemSlot了,此節(jié)點是自適應(yīng)處理器,主要是根據(jù)系統(tǒng)自身負載(qps、最大線程數(shù)、最高響應(yīng)時間、cpu使用率、系統(tǒng)bbr)來判斷請求是否能夠通過,保證系統(tǒng)處于一個能穩(wěn)定處理請求的安全狀態(tài)。
尤其值得一提的是bbr算法,作者參考了tcp bbr的設(shè)計,通過最大的qps和最小的響應(yīng)時間動態(tài)計算出可進入的線程數(shù),而不是一個粗暴的固定可進入的線程數(shù),為什么能通過這兩個值就能計算出可進入的線程數(shù)?可以網(wǎng)上搜索一下tcp bbr算法的解析,十分巧妙,不再細說。
以上就是關(guān)于chainnode相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
ChatGPT的發(fā)音(chat發(fā)音怎么讀音)
室內(nèi)設(shè)計軟件好學(xué)嗎(室內(nèi)設(shè)計軟件好學(xué)嗎女生)