成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > golang實戰(zhàn)之truncate日志文件詳解

golang實戰(zhàn)之truncate日志文件詳解

熱門標簽:汕頭小型外呼系統(tǒng) 濱州自動電銷機器人排名 釘釘有地圖標注功能嗎 黃岡人工智能電銷機器人哪個好 浙江高頻外呼系統(tǒng)多少錢一個月 阿里云ai電話機器人 建造者2地圖標注 惠州電銷防封電話卡 鄭州亮點科技用的什么外呼系統(tǒng)

前言

有時候我們生成的日志文件很大,如果文件過大,或者磁盤空間有限,那么我們就需要把日志文件改小一點。

(當然實際應(yīng)用場景中,一般采用log rotate的方式實現(xiàn)多個日志文件,定期把舊的日志文件挪走或者刪除)

現(xiàn)在我們考慮如何把日志文件變小的場景。

首先想到的是文件truncate,遺憾的是truncate是把新的內(nèi)容刪掉,而不是把舊的內(nèi)容刪掉;因為通常我們的做法是要把舊的日志內(nèi)容刪除,而保留最新的日志內(nèi)容。

方法1:拷貝文件,然后把前半部分刪除,保留新的后半部分

$ wc -l logfile
$ tail -n {LINENUM}/2 logfile > logfile2
$ mv logfile2 logfile

缺點是需要額外的臨時磁盤空間(logfile2),保留新拷貝的文件

方法2:把日志文件讀入內(nèi)存,截去前半部分,把后半部分重新寫會文件。

缺點也是要創(chuàng)建一個臨時文件,或者把整個文件內(nèi)容一次性讀入內(nèi)存。

下面是一個實現(xiàn)創(chuàng)建臨時文件的例子:

(如果采用整個文件讀入內(nèi)存,那么可以重復(fù)覆蓋使用原來的讀入文件,不用創(chuàng)建臨時文件):

package main

import (
 "bufio"
 "log"
 "io"
 "os"
)

func ReadLine(r *bufio.Reader, w *bufio.Writer) error {
 for i := 0; ; i++ {
  line, err := r.ReadString('\n')
  if i >= 12554364/2 { // this number is hard-codes just for example use
   if _,err := w.WriteString(line); err != nil {
    log.Fatal(err)
   }
  }

  if err != nil {
   if err == io.EOF {
    return nil
   }
   return err
  }
 }
 return nil
}

func main() {
 fin, err := os.Open("data.in")
 if err != nil {
  log.Fatal(err)
 }
 defer fin.Close()

 fout, err := os.Create("data.dat")
 if err != nil {
  log.Fatal(err)
 }
 defer fout.Close()

 reader := bufio.NewReader(fin)
 writer := bufio.NewWriter(fout)
 if err := ReadLine(reader, writer); err != nil {
  log.Fatal(err)
 }
 writer.Flush()
}

運行:

對于1G大小的日志文件,在我的Linux上執(zhí)行時間大約是:

$ go build  time ./main
real 0m6.972s
user 0m4.668s
sys  0m2.055s

方法3:也是利用文件,把文件mmap映射到內(nèi)存,然后使用copy函數(shù)覆蓋內(nèi)存。

缺點是,mmap操作日志文件不能過大。

下面是一個實現(xiàn)的代碼例子:

package main

import (
 "fmt"
 "log"
 "os"
 "syscall"
)

// Truncate file to half size, with line aligned.
func truncateText(f *os.File) error {
 fi, err := f.Stat()
 if err != nil {
  return err
 }

 mem, err := syscall.Mmap(int(f.Fd()), 0, int(fi.Size()), syscall.PROT_READ|syscall.PROT_WRITE, syscall.MAP_SHARED)
 if err != nil {
  return err
 }

 size := fi.Size()
 if size = 1 {
  // Don't need to truncate file if it's too small
  return nil
 }

 trun := size/2 - 1
 for ; trun  fi.Size(); trun ++ {
  if mem[trun] == '\n' {
   break
  }
 }

 //fmt.Printf("size=%d, trun=%d\n", size, trun)
 if trun >= size - 1 {
  trun = size/2
 } else {
  trun = trun + 1
 }

 // Overwrite file content
 copy(mem[0:], mem[trun:])
 
 err = syscall.Munmap(mem)
 if err != nil {
  return err
 }

 // truncate file
 f.Truncate(fi.Size() - trun)

 // reset file offset
 f.Seek(trun,0)

 return nil
}


func main() {
 path := "data.dat"

 f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0644)
 if err != nil {
  fmt.Println("Cannot create file")
  log.Fatal(err)
 }

 err = truncateText(f)
 if err != nil {
  fmt.Println("Cannot truncateLog file")
  log.Fatal(err)
 }

 f.Write([]byte("ABCD"))
 f.Close()
}

函數(shù)truncateText的功能就是把文件截取到原來的一半大小,并保持按行對齊;分如下幾步:

  • 先把文件映射syscall.Mmap 到內(nèi)存。
  • 查找到中間行的位置。
  • 然后用內(nèi)置函數(shù)copy,把中間行以后的挪動到文件開始位置。
  • 修改文件的大小file.Truncate
  • 重置文件的偏移指針offset
  • 取消文件映射syscall.Munmap

運行:

對于1G大小的日志文件,在我的Linux上執(zhí)行時間大約是:

$ go build  time ./main
real 0m1.861s
user 0m0.335s
sys  0m0.650s

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Oracle給用戶授權(quán)truncatetable的實現(xiàn)方案
  • delete from 表名與truncate table 表名區(qū)別
  • SQL中Truncate的用法
  • tf.truncated_normal與tf.random_normal的詳細用法
  • smarty中改進truncate使其支持中文的方法
  • SQL Server中TRUNCATE事務(wù)回滾操作方法
  • 實例理解SQL中truncate和delete的區(qū)別
  • 詳解SQL中drop、delete和truncate的異同
  • Mysql開啟慢SQL并分析原因
  • Truncate Table的用法講解

標簽:泰安 瀘州 阿壩 滄州 昭通 東營 晉中 駐馬店

巨人網(wǎng)絡(luò)通訊聲明:本文標題《golang實戰(zhàn)之truncate日志文件詳解》,本文關(guān)鍵詞  golang,實戰(zhàn),之,truncate,日志,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《golang實戰(zhàn)之truncate日志文件詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于golang實戰(zhàn)之truncate日志文件詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    成人av资源| 欧美理论片在线观看| 亚洲第一黄色网| 久久精品国产精品亚洲红杏| 一区二区三区国产精品| 国产精品综合久久| 亚洲激情网站免费观看| 欧美 日韩 国产精品| 国产suv一区二区三区88区| jizz18女人高潮| 小明精品国产一区二区三区| 影音先锋在线中文字幕| 欧美精品日韩少妇| 久久久免费高清视频| 亚洲特级毛片| 午夜激情一区二区三区| 日本a级在线| 亲爱的老师6电影韩剧| 欧美劲爆第一页| 日本中文字幕视频一区| 图片小说视频色综合| 国产99视频精品免费视频36| 18video性欧美19sex高清| 男人天堂手机在线观看| 国产一区三区三区| 久久99精品久久久久久琪琪| 最色在线观看| 成人av激情人伦小说| 深夜福利视频在线免费观看| 亚洲尤物av| 中文精品视频| 欧美精品一区二区三区涩爱蜜| 亚洲美女搞黄| 免费黄网站在线观看| 亚洲激情av在线| 国产美女视频一区| 欧美日韩理论片| avhd101老司机| 亚洲精品乱码久久久久久自慰| 97精品国产福利一区二区三区| 国产精品久久久久久久久久久不卡| 中文字幕在线网站| jizz日本大全| 5858s免费视频成人| 羞羞视频在线观看一区二区| 二区三区偷拍浴室洗澡视频| 国产欧美精品一区二区三区-老狼| jizz性欧美2| 亚洲精品v亚洲精品v日韩精品| 青青草在线免费观看| 精品国产伦一区二区三区观看说明| 国产四区在线观看| 美女视频一区| www天堂在线| 秋霞视频一区二区| 亚洲国产精品中文| 亚洲超碰97人人做人人爱| 蜜桃av在线| 国产av无码专区亚洲a∨毛片| 一区二区日本伦理| 在线免费av电影| 成人福利小视频| 国产精品亚洲欧美| 米奇777在线影院线| 国产麻豆精品一区二区| 96pao国产成视频永久免费| 亚洲激情中文在线| 青青草手机视频在线观看| 欧美爱爱视频网站| 久久久久久18| 郴州新闻综合频道在线直播| 美女视频黄频大全不卡视频在线播放| 三上悠亚在线免费观看| 国产三级伦理在线| 国产精东传媒成人av电影| 日日摸夜夜添夜夜添毛片av| 91精品办公室少妇高潮对白| 日韩人妻无码一区二区三区| 成人在线观看一区二区| 国产日产精品1区| 一区二区三区高清在线视频| 美女视频网站久久| 在线你懂的视频| 色综合久久五月天| 亚洲国产精品综合小说图片区| 欧美日韩激情美女| 欧美日韩一区二区三区在线看| 日韩欧美中文一区| 紧缚捆绑精品一区二区| 热re99久久精品国产66热| 亚洲第一视频网| 草裙成人精品一区二区三区| 久久77777| 欧美激情一区二区视频| 激情综合中文娱乐网| 久久久久久蜜桃| 欧美午夜激情在线| 精品无码一区二区三区的天堂| 久久久久久亚洲精品美女| 超碰91人人草人人干| 欧美国产日韩a欧美在线观看| 国精产品一区一区三区四川| 亚洲av激情无码专区在线播放| 成人av片在线观看| 放荡的美妇在线播放| 熟女少妇内射日韩亚洲| 国产91色在线播放| 嫩草嫩草嫩草| 午夜伦全在线观看| 中国女人精69xxxxxx视频| 国产成人精品一区二区在线小狼| 色噜噜狠狠一区二区三区| 户外露出一区二区三区| 91九色国产在线| 亚洲国产精品ⅴa在线观看| jizz一区二区三区| jizzjizzjizz中国免费| 色一情一交一乱一区二区三区| 特黄aaaaaaaaa毛片免费视频| 中文字幕在线播放日韩| 日本中文字幕电影在线观看| 久久国产精品视频在线观看| 国产呦萝稀缺另类资源| 99热这里只有精品在线播放| 日韩不卡在线视频| 91精品国产色综合久久ai换脸| 亚洲午夜久久久久久久久红桃| 三妻四妾的电影电视剧在线观看| 一本色道久久精品| 久久久久久久久久久久久女国产乱| 久久久久国产精品一区| 51国偷自产一区二区三区| 成年网站在线在免费播放| 精品黄色免费中文电影在线播放| 欧美一激情一区二区三区| 18啪啪污污免费网站| 国产精品午夜久久久久久| 国产精品久久在线| 中文字幕资源网在线观看免费| 欧美精品小视频| 亚洲女优视频| 日本在线视频免费观看| 国产一二三区在线视频| 不卡中文字幕在线观看| 精品无码人妻一区二区三| 久久久久久在线观看| 欧美一级久久久| 亚洲成成品网站| 免费不卡亚洲欧美| 国产精品久久久久9999高清| 福利写真视频网站在线| www日本视频| 亚洲精品电影院| 亚洲二区在线播放视频| 国产精品国产三级国产aⅴ9色| 美国av一区二区| 国模私拍国内精品国内av| 国产精品精品软件视频| 日本私人网站在线观看| 欧美美女18p| 在线视频不卡一区二区三区| 欧美一区二区三区久久| 免费一级欧美在线观看视频| 91吃瓜网在线观看| 一个人看的免费视频色| 亚洲一一在线| 国产精品一卡二卡在线观看| 一区二区三区欧美成人| 国产免费专区| 国产精品黄色网| 欧美精品福利视频| 国产精品酒店视频| 国产精品一区二区三区四区色| 久久综合九色综合欧美亚洲| 7777精品伊人久久久大香线蕉| 久久婷五月综合| 国产羞羞视频在线观看| 在线精品视频一区| 免费看污黄网站在线观看| 日韩毛片无码永久免费看| 在线日本制服中文欧美| 成人性生交大片免费看在线播放| 97精品久久人人爽人人爽| 亚洲综合在线第一页| 91丝袜美腿美女视频网站| 午夜成人鲁丝片午夜精品| 欧美丰满一区二区免费视频| 免费看av大片| 色一情一乱一伦一区二区三区| 亚洲精品成人无限看| 色婷婷av一区二区三区之e本道| 91免费版在线看| 韩日视频一区| av手机免费观看| 欧美黑人一区二区| 天堂一区二区三区| 亚洲久久久久久久| 亚洲视频电影图片偷拍一区| 青青草原一区二区| 欧美日韩精品欧美日韩精品| 狠狠色狠狠色综合日日91app| 在线亚洲免费视频| 国模无码国产精品视频| 日韩在线理论| 亚洲成人激情社区| 精品少妇3p| 亚洲春色综合另类校园电影| 日本大香伊一区二区三区| 一区二区中文字幕在线观看| 男人天堂999| 成年人看片网站| 97超碰资源站在线观看| 国产日韩欧美一区二区三区四区| 免费在线中文字幕| 九色porny丨入口在线| 一道本在线观看| 国产在线一区二区三区| japanese国产| 韩国福利一区| 91久久人澡人人添人人爽欧美| 欧美一级日韩不卡播放免费| 亚洲国产成人久久综合一区| 国产精品69久久久久| 久久综合一区二区三区| 久久国产精品亚洲va麻豆| 国产成人精品一区二区三区网站观看| 日本最新一区二区三区视频观看| 9久草视频在线视频精品| 亚洲国产精品va在线观看黑人| 亚洲午夜日本在线观看| 亚洲专区欧美专区| 亚洲国产精品一区二区久久hs| 久久大胆人体视频| 久久一区免费| 国产3级在线观看| 婷婷亚洲婷婷综合色香五月| 性欧美黑人xxxx| 国产精品香蕉av| 久久九九全国免费精品观看| 亚洲欧美日韩国产精品| 国产成人的电影在线观看| 日韩免费视频一区二区视频在线观看| 91夜夜未满十八勿入爽爽影院| 高清毛片aaaaaaaa**| 欧美激情一区二区三级高清视频| 午夜精品久久久久久久星辰影院| 国产91色在线观看| 四虎黄色影院| 在线手机中文字幕| 99热这里只有精品首页| 色香色香欲天天天影视综合网| 成年人免费在线视频网站| 国产一区欧美二区三区| 国产成人精品无码播放| 国产又色又爽又高潮免费| 久久免费看少妇高潮v片特黄| 亚洲一二三av| 日韩av黄色片| 91蜜桃网址入口| 国产精品一区专区| 国产精品99久久久久久似苏梦涵| 亚洲大尺度网站| 国产乱淫av片| 欧美日韩亚洲国内综合网| 欧美精品欧美精品系列| av在线播放国产| 三级黄色网址| 日韩小视频在线| 欧美丰满美乳xxx高潮www| 玖玖爱免费视频| 亚洲久草在线视频| se视频在线观看| 99热在线观看免费精品| 国产精品最新| 免费xxxxx网站中文字幕| 亚洲一区图片| 日韩欧美在线观看强乱免费| 9.1麻豆精品| 欧美精品亚州精品| 亚洲高清在线视频| 日韩久久精品一区二区三区| 中文在线免费观看| 少妇**av毛片在线看| 五月天一区二区三区| 国产欧美亚洲精品| 欧美oldwomenvideos| 中文字幕欧美人妻精品| 一区二区欧美在线观看| 国产极品模特精品一二| 欧美日韩一区二区欧美激情| 国产视频中文字幕| 99精品美女视频在线观看热舞| 超碰在线caoporen| 亚洲av永久纯肉无码精品动漫| 亚洲天堂av免费在线观看| 国产精品久久综合| 久久夜色精品国产噜噜av| 精品久久久视频| 国产麻豆精品95视频| 韩国中文免费在线视频| 欧美阿v一级看视频| 日韩美女av在线免费观看| 日韩理论电影中文字幕| 久操视频在线| 久久不射影院| 视频一区欧美日韩| 亚洲精品综合一区二区三区| 午夜毛片在线观看| 内射一区二区三区| 精品女厕厕露p撒尿| 日本三级很黄试看120秒| 女人天堂网站| yw.尤物在线精品视频| 亚洲成人av免费看| 综合激情一区| 色综合久久天天综线观看| www.三级.com| 日韩中文在线中文网三级| 日本三级福利片| av毛片精品| 丰满少妇又爽又紧又丰满69| 91偷拍一区二区三区精品| www.九色.com| 国产精品久久久午夜夜伦鲁鲁| 日韩脚交footjobhdboots| 久久蜜桃av一区二区天堂| 欧美性xxxx图片| 理论不卡电影大全神|