分享一个生成反遗忘复习计划的java程序

想必这个曲线大家都认识,这是遗忘曲线,展示人的记忆会随着时间的延长慢慢遗忘的规律,同时还展示了如果我们过一段时间复习一次对遗忘的有利影响.
道理大家都懂,关键怎么做到?
靠在本子上记下今天我该复习哪一天的知识?或者手机上设定一个提醒?....
不,这些方法都太麻烦又难受了,因为光安排复习时间,就得让你写很长时间,而且复习的时候还得对照它们再去找对应的笔记.
今天我就跟大家分享一款我根据遗忘曲线自己开发的一款java小程序:
只要你告诉它首尾日期和磁盘地址,它就给你生成有规律的复习计划,像这样:

打开20190325.doc里面是这样的:

仔细看,里面日期的规律,前一天,前3天,前7天,前15天.......
对!反遗忘复习规律就在这里!!!
废话不多说,下面给大家分享代码:
=======================================================
package com.huawei.it.helloworld; import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date; /**
* @author 一马平川1
* @date 2019/2/19 23:02
* @description
*/
public class BatchCreateNoteFiles { private static final int ADD_ONE_DAY = 1 ; public static void main(String[] args) throws IOException, ParseException {
BatchCreateNoteFiles batchCreateNoteFiles = new BatchCreateNoteFiles();
//按如下格式填入起止日期和生成文件的磁盘地址
batchCreateNoteFiles.createFile("20190220","20200220","E:\\MyNotes\\");
} //生成文件
public void createFile(String startDate,String endDate,String location) throws ParseException, IOException {
String prefix = location;
String suffix = ".doc";
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
String fileName = startDate;
while (Integer.parseInt(fileName) <= Integer.parseInt(endDate)){
File file = new File(prefix+fileName+suffix);
//给文件写入内容
initFile(file,fileName,f);
Calendar instance = Calendar.getInstance();
instance.setTime(f.parse(fileName));
instance.add(Calendar.DAY_OF_MONTH,BatchCreateNoteFiles.ADD_ONE_DAY);
fileName = f.format(instance.getTime());
}
}
//给文件写入内容(文件内容初始化)
private void initFile(File file, String fileName, SimpleDateFormat f) throws IOException, ParseException {
FileOutputStream fs = new FileOutputStream(file);
fs.write(getInitContent(fileName,f).getBytes());
} //获取文件初始化内容
private String getInitContent(String fileName, SimpleDateFormat f) throws ParseException {
Date noteDate = f.parse(fileName);
Calendar instance = Calendar.getInstance();
instance.setTime(noteDate);
StringBuilder sb = new StringBuilder("[");
//获取1天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001);
sb.append(f.format(instance.getTime())).append("]-[");
//获取3天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 1);
sb.append(f.format(instance.getTime())).append("]-[");
//获取7天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 2);
sb.append(f.format(instance.getTime())).append("]-[");
//获取15天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 3);
sb.append(f.format(instance.getTime())).append("]-[");
//获取31天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 4);
sb.append(f.format(instance.getTime())).append("]-[");
//获取63天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 5);
sb.append(f.format(instance.getTime())).append("]-[");
//获取127天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 6);
sb.append(f.format(instance.getTime())).append("]-[");
//获取255天之前的日期
instance.add(Calendar.DAY_OF_MONTH,-0x0000001 << 7);
sb.append(f.format(instance.getTime())).append("]");
return sb.toString();
}
}
=======================================================================
本小程序的功能目标是:能自动给文档中初始化的日期内容添加上各自的超链接,这样就不用手动添加超链接了,如果你知道怎么操作,请大侠留言,谢谢!
本小程序接下来将利用Swing做一个亲和的界面,当然这不是重点,主要是更人性化一些.
此外,本博主想问问:怎么将java小程序封装成能双击启动的EXE程序?如果能这样,那这个小程序就很完美了! 大侠,请留下您宝贵的建议!
分享一个生成反遗忘复习计划的java程序的更多相关文章
- 《Java编程思想》读书笔记-第一个Java程序
		积少成多,欢迎大家关注我的微信公众号,共同探讨Java相关技术 今天的重点是:编写源代码.编译.运行.查看成果.除此之外,还需要搭建起与前面学习的知识的联系. 写本文时依据的系统环境是Windows1 ... 
- 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
		分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ... 
- Git.Framework 框架随手记-- 分享一个"比较垃圾"的项目
		本文主要分享一个Git.Framework 开发的一个项目的部分源码,此项目代码"比较垃圾",所以请各位码农,码畜,码神,码圣勿喷!发此文只为记录工作问题以及分享问题! 一. 项目 ... 
- 分享一个安卓中异步获取网络图片并自适应大小的第三方程序(来自github)
		安卓中获取网络图片,生成缓存 用安卓手机,因为手机流量的限制,所以我们在做应用时,要尽量为用户考虑,尽量少耗点用户的流量,而在应用中网络图片的显示无疑是消耗流量最大的,所以我们可以采取压缩图片或者将图 ... 
- (转)分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间)
		分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 很多时候我们都需要计算数据库中各个表的数据量和每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tab ... 
- 分享一个SQLSERVER脚本
		原文:分享一个SQLSERVER脚本 分享一个SQLSERVER脚本 很多时候我们都需要计算数据库中各个表的数据量很每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespac ... 
- 分享一个自己写的MVC+EF “增删改查” 无刷新分页程序
		分享一个自己写的MVC+EF “增删改查” 无刷新分页程序 一.项目之前得添加几个组件artDialog.MVCPager.kindeditor-4.0.先上几个效果图. 1.首先建立一个数 ... 
- 【开源.NET】 分享一个前后端分离的轻量级内容管理框架
		开发框架要考虑的面太多了:安全.稳定.性能.效率.扩展.整洁,还要经得起实践的考验,从零开发一个可用的框架,是很耗时费神的工作.网上很多开源的框架,为何还要自己开发?我是基于以下两点: 没找到合适的: ... 
- 分享一个不错的Unittest测试报告
		分享一个不错的,unittest测试报告. 先上图: 代码如下: 复制下来保存成py可用 #coding=utf-8 """ A TestRunner for use w ... 
随机推荐
- MySql 8.0 版本使用navicat连不上解决
			先通过命令行进入mysql的root账户: 更改加密方式 ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE ... 
- 『TensorFlow』SSD源码学习_其七:损失函数
			Fork版本项目地址:SSD 一.损失函数介绍 SSD损失函数分为两个部分:对应搜索框的位置loss(loc)和类别置信度loss(conf).(搜索框指网络生成的网格) 详细的说明如下: i指代搜索 ... 
- 【PAT】我要通过!
			“答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”. 得到“答案正确”的条件是: 1 ... 
- Makefile 系统论述
			该篇文章为转载,是对原作者系列文章的总汇加上标注. 支持原创,请移步陈浩大神博客: http://blog.csdn.net/haoel/article/details/2886 概述 什么是make ... 
- learning makefile grammar
- 过滤器(filter),监听器(listener),与servlet的执行顺序
			创建: 加载顺序 监听器-->过滤器-->Servlet.项目启动后,容器会首先创建声明的各种监听器,为后继的各个事件监听做准备,然后创建过滤器,最后是Servlet.销毁的时候是反序进行 ... 
- Full permutation
			Full Permutation 全排列问题, 将1~n这n个整数按字典序排放 划分: 输出1开头的全排列 输出2开头的全排列 ...... 输出n开头的全排列 递归边界:当下标1 ~ n 位都已经填 ... 
- oracle监控资源管理器
			资源管理器的配置在一组dba视图显示,主要是如下视图: dba_rsrc_plans 显示计划和状态. dba_rsrc_plan_directives 显示计划指令 dba_rsrc_consume ... 
- 2017年4月12日16:53:54 mysql 还有没看过的命令,spring boot rabbitmq的几种应用场景,mybaties的几种句柄及其映射规则
			ON DUPLICATE KEY UPDATE rabbitmq:http://www.cnblogs.com/ityouknow/p/6120544.html http://blog.cs ... 
- 莫烦tensorflow(7)-mnist
			import tensorflow as tffrom tensorflow.examples.tutorials.mnist import input_data#number 1 to 10 dat ... 
