分享一个生成反遗忘复习计划的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 ...
随机推荐
- 『TensorFlow』读书笔记_VGGNet
VGGNet网络介绍 VGG系列结构图, 『cs231n』卷积神经网络工程实践技巧_下 1,全部使用3*3的卷积核和2*2的池化核,通过不断加深网络结构来提升性能. 所有卷积层都是同样大小的filte ...
- python -- 面向对象 - 反射
1.isinstance ,type, issubclass isinstance:判断给的对象是否是**类型 type:返回**对象的数据类型 issubclas ...
- 数据结构之二分查找——Java语言实现
场景描述:给出一个数据序列长度为N,然后查找 一个数是否在数据序列中,若是,则返回在序列中的第几个位置. 首先可能第一个想到的就是按照顺序,从前到后一个一个进行查找,直到找到为止,若最后都没有,则说明 ...
- sql查询练习
#建学生信息表student create table student ( sno varchar(20) not null primary key, sname varchar(20) not nu ...
- 解决RAID重启后自动更名为md127
创建完raid后查看/etc/有没有生成mdadm.conf文件 如果没有执行命令:mdadm --detail --scan >> /etc/mdadm.conf 编辑配置文件/etc/ ...
- Maximum Average Subarray
Given an array with positive and negative numbers, find the maximum average subarray which length sh ...
- Java生成带logo二维码
目前生成二维码的方式有很多种,本例采用谷歌的zxing,去白边,添加logo等处理均在代码中有注释 demo连接 https://github.com/littlechaser/qrcode.git
- Python测试框架之Unittest梳理
1. 2.
- vue bus的使用
vue中的bus事件,一般作为中央事件总线来使用 简单例子:比如在A,B组件为兄弟组件,现在A要调用B的中C事件 1.创建一个bus.js 内容: import Vue from 'vue' cons ...
- Python基础05_str_补充
继续学习中, 补充一些str 的索引.切片.长度.循环输出等. #!/usr/bin/env python # coding:utf-8 # 通过下标索引获取字符串中的某个字符 # 1. 索引 tes ...