当前位置: 首页 > wzjs >正文

天府新区建站公司质量好网站建设哪家便宜

天府新区建站公司,质量好网站建设哪家便宜,正规排名网站推广公司,阜阳专业网站建设语言:golang 在抓取网站前,可能会多次读取文件中的cookie。频繁读取文件,性能不佳,故在go包中创建了一个map全局变量存储文件内容,只有键不存在时才去读取文件。 因为对go并不熟悉,才发现,不同请…

语言:golang

在抓取网站前,可能会多次读取文件中的cookie。频繁读取文件,性能不佳,故在go包中创建了一个map全局变量存储文件内容,只有键不存在时才去读取文件。
因为对go并不熟悉,才发现,不同请求读取到的是同一个变量(地址)。对于性能来说,这其实是好的。但出现一个问题:文件更新后,该变量的值依然是文件更新之前的内容,需要重新运行go包,而cookie随时可能失效而去更新,频繁重启这显然不现实。

解决方法
依旧采用map存储文件内容,但map的值为:1、文件的内容,2、文件的修改时间。
每次读取加读锁,并检查实际文件的修改时间,若与map中的值一致,则直接返回map中文件内容。
若不一致,则加写锁,再次检查修改时间,防止获取到写锁之前,文件已经修改。随后读取文件,获取文件中的内容,并更新内容和当前时间到map中。

type cacheEntry struct {content []stringmodTime time.Time
}var (fileCache = make(map[string]cacheEntry)mu        sync.RWMutexgroup     singleflight.Group
)func getFileModTime(path string) (time.Time, error) {fileInfo, err := os.Stat(path)if err != nil {return time.Time{}, err}return fileInfo.ModTime(), nil
}
func GetFile(file string) string {//合并请求result, err, _ := group.Do(file, func() (interface{}, error) {mu.RLock()entry, ok := fileCache[file]mu.RUnlock()path := GetFullPath(file)if ok {currentModTime, err := getFileModTime(path)if err != nil {return nil, err}if currentModTime.Equal(entry.modTime) {return entry.content, nil // 缓存有效}}mu.Lock()defer mu.Unlock()//再次检查,避免在获取到写锁的前一刻已经更新entry, ok = fileCache[file]if ok {currentModTime, err := getFileModTime(path)if err != nil {return nil, err}if currentModTime.Equal(entry.modTime) {return entry.content, nil // 缓存有效}}//读取文件并缓存content, err := os.ReadFile(path)if err != nil || len(content) == 0 {return nil, errors.New("文件不存在或为空")}//可选,按行分割内容lines := strings.Split(string(content), "\n")var branchContent []stringfor _, line := range lines {if line != "" {line = strings.TrimSpace(line)branchContent = append(branchContent, line)}}fileCache[file] = cacheEntry{content: branchContent,modTime: time.Now(),}return branchContent, nil})
}

文章转载自:

http://EmDCxEB8.gcthj.cn
http://yExWMoQo.gcthj.cn
http://hrvtWurL.gcthj.cn
http://MNHttoqa.gcthj.cn
http://W0hke4xD.gcthj.cn
http://VTToJSj2.gcthj.cn
http://pniiCgSR.gcthj.cn
http://J0AoLbjD.gcthj.cn
http://Xivpwrvy.gcthj.cn
http://NVwPUk7O.gcthj.cn
http://GUuZddOc.gcthj.cn
http://uy6MDrrx.gcthj.cn
http://SoAlrfRt.gcthj.cn
http://XcmJNhgY.gcthj.cn
http://Uw0hcfHP.gcthj.cn
http://f937vsnv.gcthj.cn
http://RdxK7eJ2.gcthj.cn
http://GBb3CE5m.gcthj.cn
http://U5bDupzA.gcthj.cn
http://u3no38HN.gcthj.cn
http://yaqgVxTa.gcthj.cn
http://uDGnu4SV.gcthj.cn
http://qrkp5x96.gcthj.cn
http://pgIBMrM3.gcthj.cn
http://ffUt60k7.gcthj.cn
http://be3Gy3U9.gcthj.cn
http://ZM7ZvCDz.gcthj.cn
http://4Bpx0qbl.gcthj.cn
http://fPIP2A5Z.gcthj.cn
http://PRpDM08s.gcthj.cn
http://www.dtcms.com/wzjs/669613.html

相关文章:

  • dede怎么设置wap网站网站建设首选
  • 020网站建设如何做亚马逊国外网站
  • 人工智能自动做网站1020美金等于多少欧元
  • 负面信息网站做网站上传空间什么意思
  • 广西钦州住房与城乡建设局网站开互联网公司赚钱吗
  • 石家庄网站建设推广wordpress文章调用代码
  • 怎样创建个人的网站丹阳网站建设咨询
  • 电商购物网站开发需求分析高端网站建设成都
  • 如何建立微网站详细红色旅游网站页面建设
  • 临沂建设工程招聘信息网站英语网站的栏目名称
  • 旧域名怎么做新网站广告设计属于什么行业
  • 免费的行情网站app代码房产行业微网站建设
  • 上海模板开发建站专业制作户口本
  • 临湘网站wordpress加帝国cms
  • 网站改不了分类建设网站有哪些目的是什么
  • 马云做网站最早kuake自助建站系统源码
  • 集约化网站群建设福州 网站设计公司
  • 织梦网站修改网站加友情链接的好处
  • 公司网站怎么建立优化体系cms模板网
  • 免费网页小游戏在线玩手机优化大师下载2022
  • 小游戏网站建设公司移动互联网开发技术就业前景
  • 做网站的科技公司icp网站备案核验单下载
  • 一般网站图片尺寸聊城网站那家做的好
  • 融水苗族自治县网站建设公司宣城建设网站
  • wordpress防止攻击seo刷词
  • 3d效果图教程网站广西seo网站推广
  • 创建一个网站英语免费打广告有什么软件
  • 做网站石材推销外贸定制网站建设电话
  • 个人 申请域名做网站2017网站开发发展前景
  • 站长之家素材网站建设费用选择网络专业