分享一个生成反遗忘复习计划的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程序?如果能这样,那这个小程序就很完美了!

大侠,请留下您宝贵的建议!

原文地址:https://www.cnblogs.com/wangxuejian/p/10421391.html

时间: 2024-09-28 22:18:13

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

JavaEE复习计划

对于这一块,也只是用到了 Web 开发的相关技术,并且很多技术已经过时或者被民间更好的取代,所以侧重于最基础的 Servlet API.会话机制. Servlet API 顶级接口:Servlet.ServletConfig.ServletContext 最常用的类:HttpServlet Servlet 接口 广义上说,一个类实现了 Servlet 接口那么就称这个类是 Servlet,也就是说 该接口中定义了所有 servlet 都必须实现的方法 . 方法一览: init(ServletCo

分享一个快速的Json(反)序列化开源项目 Jil

我们不缺少JSON的序列化库,但我们缺少一个性能非常好的库,这对于网站来说非常重要.今天我发现了Jil. 他是开源的代码: https://github.com/kevin-montrose/Jil 在他主页上有详细的介绍其性能的表现,我这里就不转述了,他最重要的特点就是性能,Emit那当然不会少了,当想让他超越其他的库光一个Emit肯定不行,他还有很多其他的优化. 公共缓冲区 为介绍GC的压力,他使用了诸如builder.CommonCharBuffer这样的功能缓冲,builder.Comm

分享一个近期写的简单版的网页采集器

分享一个近期写的简单版的网页采集器 功能特点: 1.可通过配置,保存采集规则. 2.可通过采集规则,进行数据采集. 3.可分页,分关键字,进行采集. 4.可保存数据至数据库,文本中. ........... 功能还比较简单,喜欢深入的可以继续深入下去,暂时还没有登录的功能,因为登录功能涉及到的范围比较广,待日后慢慢研究后再开发. 我先上个图让大家一睹为快吧: 首先看看页面,我们要采集这个网站的文章 接下来,首先是查找分页,获得分页里面的文章链接,接着查找内容页需要采集的字段,生成规则,进行采集.

分享一个搭建流量频道的经历

最近接触了一个很小众的行业,行业本身的搜索流量很小.朋友来问我SEO该怎么做. 于是有了这次经历,目前各项数据都还在测试观察中.好了开始. 仔细研究了一下他所在的行业,发现虽然是一个新兴的小众的行业,但是能跟娱乐类的信息扯上关系.于是准备搭建一个明星资料库来引入一批流量.由于这个朋友是技术出身,技术也比较牛,于是几乎把想到的东西都实现了. 首先从词库入手,既然是搭建明星资料库,那么从获取明星名字开始,这个从很多软件或者网站上都能够直接跑出来!经过对部分歌手的抽样分析,发现稍微热门一点的歌手,基本

分享一个C++写的远程控制木马:Gh0st_VS2010直接编译

经过修改VS2010已经可以直接编译了,之前做了360等主流的免杀现在已经失效了 放出代码给需要的朋友学习,请勿用作非法用途 代码下载地址如下: 链接: http://pan.baidu.com/s/1sjwhh8L  密码: rc6f 编译后有3个文件,运行Gh0st.exe就行了,运行以后配置好,可以生成被控端,运行以后自动删除自己的exe,开机启动服务等--至于使用教程百度很多,自己找一找吧 解压密码在: http://www.bcwhy.com/thread-21884-1-1.html

分享一个自己写的.Net的ORM工具

注册博客园帐号也有好几年了,之前注册帐号主要是为了看别人的文章下载东西的时候方便.从来没有写过什么博客,一直以为只要注册了帐号就可以写博客,最近用到了才发现还得申请一下,于是就申请了博客,算了也不扯这么多没用的了,直接进入主题吧! 网上开源的ORM工具也不少,开源中国上就有不少,很多都下载试用过,不过感觉用起来都不是很方便,园子里面也有不少人分享自己写的ORM工具,用过一个叫 MySoft.Data 的ORM工具,感觉里面的链式调用函数的写法不错,但是用起来感觉也有些不如意的地方,于是某个周末的

分享一个SQLSERVER脚本

原文:分享一个SQLSERVER脚本 分享一个SQLSERVER脚本 很多时候我们都需要计算数据库中各个表的数据量很每行记录所占用空间 这里共享一个脚本 CREATE TABLE #tablespaceinfo ( nameinfo VARCHAR(50) , rowsinfo BIGINT , reserved VARCHAR(20) , datainfo VARCHAR(20) , index_size VARCHAR(20) , unused VARCHAR(20) ) DECLARE @

分享一个大型进销存供应链项目(多层架构、分布式WCF多服务器部署、微软企业库架构)

分享一个大型进销存供应链项目(多层架构.分布式WCF多服务器部署.微软企业库架构) 这是一个比较大型的项目,准备开源了.支持N家门店同时操作.远程WCF+企业库5.0实现. 这块应该算是库存模块中的核心模块了,因为该块的业务逻辑比较多,比较繁琐,大致讲讲业务逻辑吧,大致的逻辑为:出库单/出库单-->填写订单-->出库/入库-->修改库存信息,按照这个顺序来完成入库出库,顺序不能颠倒,同时还要实现订单的删除,修改,在修改库存信息时由于表和表之间有很多的外键关系,所以要同时删除多张表中含有删

分享一个自己用的基于mvc编程工作管理

前言: 最近在家没事学习下mvc,正好把以前用webform写的一个帮助自己编码的工具重构成了mvc,另外根据自己的编程工作感悟添加了公司常用软件维护 ,数据库操作记录这些新功能. 技术没什么高深的技术,就是mvc+jquery easyUi+简单的三层,生成文档的模板引擎用的Razor. 主要还是解决沟通成本太高的问题,都是根据工作中遇到的问题慢慢解决的,至少很多功能可以解决小型软件团队很多流程问题,自己摸索真是又痛苦又快乐.相信也有很多朋友和我一样没有去过大型软件公司,很多问题只能看别人的文