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