博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
大清单报表的打印?
阅读量:6624 次
发布时间:2019-06-25

本文共 904 字,大约阅读时间需要 3 分钟。

sjjt-211

我们谈了大清单报表的呈现方法,其实有时候这些报表还需要打印,比如银行打印流水对账单。

那么,打印是不是也要像呈现那样做一个缓存机制呢?


没有这个必要。打印和浏览不同,一般是从头到尾过一遍就行了,过程中没有翻页的需求。这样,只要流式读入数据逐步生成打印页就可以了,不会发生内存溢出的问题。

但这个做法仍然比较麻烦,特别是现代浏览器加强了安全控制,applet等插件经常被禁用,打印功能常常不能直接由报表工具提供,而要采用flash或PDF方式来实现。用flash可以做到流式读取,但并不简单,还会导致插件与后台耦合性过高,影响安全性;而PDF方式就是一次性生成一个文档,没办法实现这种机制了。


我们来算算打印100万行记录是什么情况。

假设一页纸能打印50行记录(这已经算多了),100万行记录就意味着2万页纸。2万页的连续打印,有多少打印机能做到这个指标?你的用户真有这样的设备吗?2万页纸大概有2米厚,什么打印机能把这些纸放进去?商用快速打印机一分钟也就30几页,就按50页/分钟算,2万页也需要7个钟头!作为一个机械设备能连续工作这么久是不容易的。

而100万行记录需要占多大内存呢?一条记录算1K已经很大(毕竟一页要打印50行的),100万行也就1G内存。这对于前端用于打印的普通PC来讲并不难满足。

这还是只算了100万记录的情况,如果把100万增加到500万,内存仍然可以承受,而打印机是万万吃不消了。也就是说,在现代计算机的内存容量下,打印这个功能采用全内存方式是没有问题的,几乎找不到需要流式读取的情况。作为一个要重复销售的商业软件,报表工具没必要去支撑这种极为罕见甚至根本不存在的应用场景。


这个计算结果,看起来有点荒唐,读者可能会觉得可笑。但这确实是和用户沟通需求时真实发生过的事情,实际上喊的记录行数比500万要大很多,而用户并没有认真计算过它意味着什么。经过一些常规计算我们就会发现,虽然有些用户在叫,大清单报表的打印其实是个伪需求。

大数据领域还有些类似的事,比如说10T数据想要3秒返回结果,用户却不会想到这很可能意味着1万块硬盘。

严谨认真一点,会推出许多想不到的有趣结论 :)。

 

转载地址:http://kznpo.baihongyu.com/

你可能感兴趣的文章
用vlc搭建简单流媒体服务器(UDP和TCP方式)
查看>>
c语言机构体,枚举,宏
查看>>
今天正式开通了博客园,好激动啊!
查看>>
CSS3 实现别样图型
查看>>
Java 200+ 面试题补充 ThreadLocal 模块
查看>>
hdu5389 Zero Escape DP+滚动数组 多校联合第八场
查看>>
有关不同浏览器不同版本号的css以及js计算高度的问题
查看>>
java垃圾收集相关问题
查看>>
python 12 生成器 列表推导式 内置函数I
查看>>
C++图形编程之graphics.h头文件
查看>>
Spring根据XML配置文件注入对象类型属性
查看>>
log4j.properties
查看>>
子集和的另外一个问题
查看>>
add the send mail permission of non-sysadmin user
查看>>
进程间通信机制(管道、信号、共享内存/信号量/消息队列)、线程间通信机制(互斥锁、条件变量、posix匿名信号量)...
查看>>
Posix信号量
查看>>
C++的字符串格式化库
查看>>
事务隔离级别下本质
查看>>
Java动态代理
查看>>
vue.js通讯----父亲拿儿子的数据
查看>>