[TOC]
密码管理器
- 先按照已有的密码管理器写
2、技术
2-1、文件内容加密保存
2-2、数据库选取
先使用本地文件的格式,如果大型或者是联网的话再考虑mongodb或者mysql、redis。
本地文件选取有两个选择:csv和xlsx
excel中后缀为csv和xls,二者区别如下: 1、xls 文件就是Microsoft excel电子表格的文件格度式。 2、csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。 此文件,一行即为数据表的一行。生成数据表字段用半角逗号隔开。 csv是文本文件,用记事知本就能打开,XLS是二进制的文件只有用EXCEL才能打 csv文件是以逗号为道分隔符号,将各字段列分离出的一种ASCII文件。 csv(*.csv) 文件格式只能保存活动工作表中的单元格所显示的文本和数值。工作表中所有的数据行和字符都将保存。专 数据列以逗号分隔,每一行数据都以回车符结束。如果单元格中包含逗号,则该单元格中的内容以双属引号引起。
CSV和excel的区别:
1.CSV是纯文本文件,excel不是纯文本,excel包含很多格式信息在里面。
2.CSV文件的体积会更小,创建分发读取更加方便,适合存放结构化信息,比如记录的导e68a84e8a2ade799bee5baa631333365646261出,流量统计等等。
3.CSV文件在windows平台默认的打开方式是excel,但是它的本质是一个文本文件。
背景
最近在应对一个数据查询导出模块,总体要求就是依据给定的SQL语句,输出其查询结果为csv或者xlsx文件。其中查询数据量可能会有大数据量,成百上千万都可能。
探讨
针对上述数据导出这个问题,提取出几个关键词:
1、SQL是由作业人员临时写的。
2、数据量大。
3、输出csv或xlsx文件。
针对这几个关键词,咱分别扩展下其含义:
第一个关键词:SQL是临时写的,这就意味着咱只是去执行这条语句,并不能对语句进行分页设计啥的,如果要重新分析SQL可能比较困难。这个时候比较贴近的场景就是“数据库查询客户端”,客户端只管执行SQL,至于执行得快慢等取决于语句及数据库性能等。
第二个关键词:数据量大,即查询的返回结果可能比较多,你如何处理返回结果,是将其先存到List列表还是直接在结果集里面就给输出到文件。这就需要考虑内存、机器性能问题,不要一条语句执行了,直接导致你的java程序死掉了,比如JVM内存溢出,CPU使用率蹭蹭的涨到99%,导致整个程序无响应。
第三个关键词:输出csv或xlsx文件,比如csv是利用成熟的三方库还是自己写(毕竟就是逗号分隔的文本),不同人可能有不同看法,但是我主张大家用现成的三方依赖包,比如javacsv\opencsv都是比较成熟的工具包。
结论: 使用csv,不需要指定文件去打开。
使用c++实现csv文件的打开和保存
2-3、使用c++实现ini文件的打开和保存
2-4、日志打印
- 文件存储
- 窗口打印