社区
Web 开发
帖子详情
关于如何避免重复读取大文件
zzxiaoma
2011-06-02 10:16:31
比如有一系列的方法需要读取大的文本或者excel文件。这个文件会随时变化,也就是不能第一次执行放内存就不读取。
一些方法都需要从文件里面取数据,如何才能更有效率的写代码呢?
...全文
115
13
打赏
收藏
关于如何避免重复读取大文件
比如有一系列的方法需要读取大的文本或者excel文件。这个文件会随时变化,也就是不能第一次执行放内存就不读取。 一些方法都需要从文件里面取数据,如何才能更有效率的写代码呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
数字巫师
2011-06-03
打赏
举报
回复
这个还是看你的文件存储数量和文件大小。
若文件不算太大(每个<100K),数量不太大(少于几万个左右)是可以考虑直接存储在数据库中的。
此时用Hibernate二级缓存监控更新足够了。
如果太多和太大,就只能放在文件系统中自己写监控,自己写缓存,还要注意监控点不要遗漏
cscxxx
2011-06-03
打赏
举报
回复
这关系到商业逻辑也就是业务层面的问题
LZ确认在读的时间点是不是文件没有变动?
是否将整个资料丢到数据库请改动也到系统上进行修改?数据库够大?
如果使用缓存多久更新一次?缓存够大?
工作人员可容忍读取时间?
总之请lz列出一些问题和答案就可以选取更适合的解决方法
安心逍遥
2011-06-03
打赏
举报
回复
IE删除一下缓存,祝你好运
Inhibitory
2011-06-03
打赏
举报
回复
[Quote=引用 7 楼 zzxiaoma 的回复:]
引用 4 楼 inhibitory 的回复:
现用现读
现用现读的话那还是需要重复的去读
[/Quote]
解决重复读就是缓存的工作了
穆大叔
2011-06-02
打赏
举报
回复
也想知道,帮顶!!
zzxiaoma
2011-06-02
打赏
举报
回复
那就是说还是需要用缓存来解决这个问题?
宁波朱超
2011-06-02
打赏
举报
回复
[Quote=引用楼主 zzxiaoma 的回复:]
比如有一系列的方法需要读取大的文本或者excel文件。这个文件会随时变化,也就是不能第一次执行放内存就不读取。
一些方法都需要从文件里面取数据,如何才能更有效率的写代码呢?
[/Quote]
hibernate 那個3級緩存(查詢緩存)。
zzxiaoma
2011-06-02
打赏
举报
回复
[Quote=引用 5 楼 zhouyusunquan 的回复:]
给文件一个版本,当更新之后版本加一,这样去判断,如果版本未变,则从内存中读取,如果变了,则重新读取,这样也可以避免不停的去读
[/Quote]
更新文件我并不知道什么时候更新,文件更新程序不能修改
zzxiaoma
2011-06-02
打赏
举报
回复
[Quote=引用 4 楼 inhibitory 的回复:]
现用现读
[/Quote]
现用现读的话那还是需要重复的去读
zzxiaoma
2011-06-02
打赏
举报
回复
[Quote=引用 3 楼 watermarkmms 的回复:]
肯定用缓存,自己写个静态的map,把内容读进去,文件修改的时候,把map内容也修改
[/Quote]
那岂不是要把读出的文件和map比较?因为不知道什么时候文件被修改,也不知道修改的是什么。那就需要把文件再读一变
zhouyusunquan
2011-06-02
打赏
举报
回复
给文件一个版本,当更新之后版本加一,这样去判断,如果版本未变,则从内存中读取,如果变了,则重新读取,这样也可以避免不停的去读
Inhibitory
2011-06-02
打赏
举报
回复
现用现读
watermarkmms
2011-06-02
打赏
举报
回复
肯定用缓存,自己写个静态的map,把内容读进去,文件修改的时候,把map内容也修改
纯c读写ini配置
文件
纯c读写ini配置
文件
用c/c++读写ini配置
文件
有不少第三方的开源库,如iniparser、libini、rwini、UltraLightINIParser等,但都不理想,往往代码较大、功能较弱、 接口使用不方便。尤其在大小写处理、前后空格、各种注释、跨平台换行符支持、带引号字符串处理、无section操作、原格式保持等方面存在问题。 现将本人精心制作的ini读写程序源码奉献给大家,纯c编写,简洁好用。支持windows和linux。 主要特点: 1、支持;和#注释符号,支持行尾注释。 2、支持带引号'或"成对匹配的字符串,提取时自动去引号。引号中可带其它引号或;#注释符。 3、支持无section或空section(名称为空)。 4、支持10、16、8进制数,0x开头为16进制数,0开头为8进制。 5、支持section、key或=号前后带空格。 6、支持\n、\r、\r\n或\n\r换行格式。 7、不区分section、key大小写,但写入时以新串为准,并保持其大小写。 8、新增数据时,若section存在则在该节最后一个有效数据后添加,否则在
文件
尾部添加。 9、支持指定key所在整行删除,即删除该键值,包括注释。 10、可自动跳过格式错误行,修改时仍然保留。 11、修改时保留原注释:包括整行注释、行尾注释(包括前面空格)。 12、修改时保留原空行。以上三点主要是尽量保留原格式。 不足之处: 1、不支持单key多value(逗号分割),只能一次性提取后自行处理。 2、不支持同名
重复
section和key。(
重复
section可视为错误,
重复
key则可能造成分歧) 3、不能提取所有section或key名称。 使用只需两个
文件
inirw.h、inirw.c,另有测试程序和工程
文件
,支持windows和linux。
Python读写
文件
1、使用Python读写
文件
一项基本技能,该课程中详细讲解了三种常用的
文件
读写方式 2、详细讲解了os模块中如何操作
文件
和路径,更好的辅助完成
文件
的读写操作,熟练对os模块的使用
使用ifstream
避免
重复
读取
txt
文件
最后一行的正确
读取
方法
【代码】使用ifstream
避免
重复
读取
txt
文件
最后一行的正确
读取
方法。
C语言
文件
操作中一些问题的解决方法(空
文件
处理&
重复
读取
)
(ahhh第二篇来了!!打卡!) 问题总结 最近在
文件
操作这一块遇到了一些问题,总的来说有以下: ①
文件
为空时,依旧执行
读取
语句 ②
读取
文件
内容时,最后一个内容会被
重复
读取
代码问题&解决方案 问题发现 对于①,很多时候会因为
文件
为空而导致程序错误,代码写的好好的理论上没问题怎么就错了呢? 下面是一段常犯的错误代码: //(VS2019) FILE* fp; fopen_s(&fp, name, "r"); // 名字为 name 的
文件
if(fp != NULL) { while
Web 开发
81,094
社区成员
341,711
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章