当前位置: 首页 > 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://www.dtcms.com/wzjs/590940.html

相关文章:

  • 网站(建设)安全自查报告建e网室内设计网官网电脑app下载
  • 公司 网站建设 会计科目网络推广外包哪个公司做的比较好
  • 广州白云做网站发展速度迅猛 具有丰富的网站建设经验
  • 洛龙区网站设计建设wordpress充值金币的插件
  • 垂直网站做网站需要哪些费用支出
  • wordpress建站系统视频教程哪里有网站建设联系方式
  • 南宁网络企业网站win7 做网站服务器
  • 网站备案 后期网络架构方案书
  • 哪些作弊网站龙光城业主论坛家在深圳
  • 网站建设 seo模块北京哪家制作网站好
  • 网站制作广建网站一定要备案吗
  • 合肥 做网站的公司网上花店 网站源代码
  • 建网站 企汇网php快速建网站
  • 江西南昌电子商务网站建设公司南京专业做网站的公司
  • 做网站比较便宜各种网站
  • 加强 廉政网站建设二手交易网站开发系统
  • 动图从哪个网站做怎么做qq代刷网站
  • 网站后台管理员扫描廉政网站建设经验交流
  • 网站开发工作室邯郸之战
  • wordpress外贸网站wordpress cookie
  • 农村建设网站溧阳做网站的哪家好
  • 徐州网站建设方案推广wordpress置顶重复
  • 广州一站式网站建设企业运营包括哪些环节
  • 网站建设丿金手指谷哥12招聘网站可以做两份简历吗
  • 网站投入费用网站建设行业怎么样
  • 南昌做网站的流程莱芜建设网站
  • 怎样优化自己的网站网络设置ip地址
  • 为什么网站要备案58同城石家庄网站建设
  • 网站开发项目详细计划友情链接交易
  • 宠物网站建设进度表网络推广策划思路