delay是延時(shí)的意思,初步個(gè)人理解是go()函數(shù)執(zhí)行擾粗正的結(jié)果持續(xù)50ms,然凳敏后執(zhí)行stop(),軟件上執(zhí)行空操作,硬件對(duì)應(yīng)的IO口輸出狀態(tài)不變。。緩悔。
創(chuàng)新互聯(lián)專注于曾都網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供曾都營(yíng)銷型網(wǎng)站建設(shè),曾都網(wǎng)站制作、曾都網(wǎng)頁(yè)設(shè)計(jì)、曾都網(wǎng)站官網(wǎng)定制、微信小程序開(kāi)發(fā)服務(wù),打造曾都網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供曾都網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
在以下這段代碼中,我們操作一個(gè)文件,無(wú)論成功與否都需要關(guān)閉文件句柄。這里在三處不同的位置都調(diào)用了file.Close()方法,代碼顯得非常冗余。
我們利用延遲調(diào)用來(lái)優(yōu)化代碼。定義后的defer代碼,會(huì)在return之前返回,讓代碼顯得更加緊湊,且可讀性變強(qiáng),對(duì)上面的代碼改造如下:
我們通過(guò)這個(gè)示例來(lái)看一下延巖液遲調(diào)用與正常代碼之間的執(zhí)行順序
先簡(jiǎn)單分析一下代碼邏輯:
從輸出中,我們可以觀察到如下現(xiàn)象:
從這個(gè)實(shí)例中,我們很明派伍顯觀察到,defer語(yǔ)句是在return之前執(zhí)行
如果一個(gè)函數(shù)內(nèi)定義了多個(gè)defer,則調(diào)用順序?yàn)長(zhǎng)IFO(后進(jìn)先出)方式執(zhí)行。
仍然是相同的例子,但是在TestDefer中我們定義了三個(gè)defer輸出,根據(jù)LIFO原則,輸出的順序是3rd-2nd-1st,根據(jù)最后的結(jié)果,也是逆向向上執(zhí)行defer輸出。
就在整理這篇筆記的時(shí)候,發(fā)現(xiàn)了自己的認(rèn)知誤區(qū),主要是本節(jié)實(shí)例三中發(fā)現(xiàn)的,先來(lái)看一下英文的描塵棗或述:
對(duì)于上面的這段話的理解:
下面是代碼執(zhí)行輸出,我們來(lái)一起分析一下:
雖然在a()函數(shù)內(nèi),顯示的返回了10,但是main函數(shù)中得到的結(jié)果是defer函數(shù)自增后的結(jié)果,我們來(lái)分析一下代碼:
在這篇文章的上一版,我曾經(jīng)嘗試用指針取解釋defer修改返回值的類型,但是感覺(jué)不夠透徹,也讓閱讀者非常困惑,索性參考了一下go官方blog中的一篇文章,在此基礎(chǔ)上進(jìn)行了擴(kuò)展。如需要閱讀原文,可以參考下面的文章。
簡(jiǎn)單減少slave同步延案架構(gòu)做優(yōu)化盡量讓主庫(kù)DDL快速執(zhí)行主庫(kù)寫數(shù)據(jù)安全性較高比sync_binlog=1innodb_flush_log_at_trx_commit = 1 類設(shè)置slave則需要高數(shù)據(jù)安全完全講sync_binlog設(shè)置0或者關(guān)閉binloginnodb_flushlog設(shè)置0提高sql執(zhí)行效率另外使用比銷態(tài)主庫(kù)更硬件設(shè)備作slave
mysql-5.6.3已仿知經(jīng)支持線程主復(fù)制原理丁奇類似丁奇表做線程Oracle使用數(shù)據(jù)庫(kù)(schema)單位做線程同庫(kù)使用同復(fù)制線程
sync_binlog=1
This makes MySQL synchronize the binary log’s contents to disk each time it commits a transaction
默認(rèn)情況并每寫入都binlog與硬盤同步操作系統(tǒng)或機(jī)器(僅僅MySQL服務(wù)器)崩潰能binlog語(yǔ)句丟 失要想防止種情況使用sync_binlog全局變量(1安全值慢)使binlog每Nbinlog寫入與硬盤 同步即使sync_binlog設(shè)置1,現(xiàn)崩潰能表內(nèi)容binlog內(nèi)容間存致性使用InnoDB表MySQL服務(wù)器 處理COMMIT語(yǔ)句整事務(wù)寫入binlog并事務(wù)提交InnoDB兩操作間現(xiàn)崩潰重啟事務(wù)InnoDB滾虧大源仍 存binlog用--innodb-safe-binlog選項(xiàng)增加InnoDB表內(nèi)容binlog間致性(注釋:MySQL 5.1需要--innodb-safe-binlog;由于引入XA事務(wù)支持該選項(xiàng)作廢)該選項(xiàng)提供更程度安全使每事務(wù) binlog(sync_binlog =1)(默認(rèn)情況真)InnoDB志與硬盤同步該選項(xiàng)效崩潰重啟滾事務(wù)MySQL服務(wù)器binlog剪切滾 InnoDB事務(wù)確保binlog反饋InnoDB表確切數(shù)據(jù)等并使服務(wù)器保持與主服務(wù)器保持同步(接收 滾語(yǔ)句)
innodb_flush_log_at_trx_commit (管用)
抱怨Innodb比MyISAM慢 100倍概忘調(diào)整值默認(rèn)值1意思每事務(wù)提交或事務(wù)外指令都需要志寫入(flush)硬盤費(fèi)特別使用電 池供電緩存(Battery backed up cache)設(shè)2于運(yùn)用特別MyISAM表轉(zhuǎn)意思寫入硬盤寫入系統(tǒng)緩存志仍每秒flush硬 盤所般丟失超1-2秒更新設(shè)0更快點(diǎn)安全面比較差即使MySQL掛能丟失事務(wù)數(shù)據(jù)值2整操作系統(tǒng) 掛才能丟數(shù)據(jù)
分享名稱:go語(yǔ)言延時(shí)執(zhí)行教學(xué) golang 超時(shí)控制
網(wǎng)頁(yè)鏈接:http://jinyejixie.com/article38/ddpgdpp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、App開(kāi)發(fā)、網(wǎng)站排名、網(wǎng)站建設(shè)、搜索引擎優(yōu)化、做網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)