从网上找的一些资料显示,
时间间隔 | 记忆量 |
---|---|
刚刚记忆完毕 | 100% |
20分钟后 | 58.2% |
1小时后 | 44.2% |
8-9小时后 | 35.8% |
1天后 | 33.7% |
2天后 | 27.8% |
6天后 | 25.4% |
1个月后 | 21.1% |
遗忘的曲线和内容有关,也和个人有关。有很多次,把事情忘记,或者是记错,给我带来了很多的困扰。一直没能找到有效的记忆方法,看到了艾宾浩斯遗忘曲线,发现很有道理。
记忆类型 | 时间间隔 |
---|---|
短时记忆 | 5分钟,20分钟, 1小时 |
长时记忆 | 12小时,1天,3天,7天,14天,30天 |
用表格来记忆,肯定是不符合现阶段大部分人的习惯的,尤其是对我这种不怎么手写的人,会觉得手写表格有点繁琐,而且不易携带,不好用。Mac上访问日历又需要很多权限,不好处理。使用提醒软件是个不错的选择,除此之外,我还想自己试试。
存储介质模式可选:
- 借助Redis的zset实现一个TimeLine模式。
- InfluxDB时序数据库。
触发机制也可以有多个:
- 邮件 (重,不及时)
- IFTTT (好用,用webhook配合notification即可,而且可用于安卓和iOS)
- OSSCRIPT (平台受限,macOS独有)
模式 | 优点 | 缺点 |
---|---|---|
Redis | 轻量、方便 | 不容易查找,update操作失效 |
InfluxDB | 易于查询更新 | 引入了外界服务,部署困难加大,不稳定性提高。 |
我的阿里云服务器端口受安全组影响, 无法使用,所以这俩思路都试试
#coding: utf8
# 未测试,不保证可以正常运行
import requests
from influxdb import InfluxDBClient
import tornado.ioloop
import tornado.web
import time
import jsonHOST = "http://localhost:8086/"
QUERY_URL = HOST + "query?pretty=true"#&data-urlencode=true"
WRITE_URL = "{}{}?db={}".format(HOST, "write", "mydb")
client = InfluxDBClient("localhost", 8086, database="mydb")roundbin = [# 短期记忆5 * 60,20 * 60,60 * 60,# 长期记忆12 * 60 * 60,86400,86400 * 2,86400 * 5,86400 * 8,86400 * 14,]# 基于艾宾浩斯遗忘曲线进行事件添加:在5分钟后重复一遍,20分钟后再重复一遍,1小时后,12小时后,1天后,2天后,5天后,8天后,14天后就会记得很牢。
def generate_event(tablename, content):events = []curtime = int(time.time())for item in roundbin:# 默认一个存储结构,根据需要进行修改schema = [{"measurement": tablename,"tags": {"content": content,"tiptime": curtime + item},"fields": {# extra data fields}}]events.append(schema)del schemareturn eventsdef get():ret = client.query('select * from "users"')print(ret)# response = requests.get(QUERY_URL+'&db=mydb&q=select * from "users"').json()# print(response['results'][0]['series'][0]['values'])def write():payload = [{"measurement": "users","tags": {"name": "hello","age": 20,"address": "MIT"},"fields": {"value": 10.0}}]global clientclient.write_points(payload)class MainHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):self.write("helloworld")class QueryHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):tablename = self.request.arguments.get("tablename")curtime = int(time.time())dayoffset = curtime + 86400*7global clientrows = client.query('select * from "users"')print(rows)self.write(json.dumps(rows))class WriteHandler(tornado.web.RequestHandler):def get(self, *args, **kwargs):content = self.request.arguments.get("content")tablename = self.request.arguments.get("tablename")events = generate_event(tablename, content)print(events)for event in events:client.write_points(event)self.write(json.dumps(events))def make_app():return tornado.web.Application([(r"/", MainHandler),(r"/query/([0-9]+)", QueryHandler),(r"/write/[a-zA-Z0-9_]+", WriteHandler)])if __name__ == "__main__":print(get())app = make_app()app.listen(8080)tornado.ioloop.IOLoop.current().start()# print(generate_event(tablename="users", content="helloworld"))# print(generate_event(measurement="users", tags={"name":"fucker", "age":20, "address":"北京"}))
总结:
有的时候思路很多,实际上去做的可能远远不够。艾宾浩斯遗忘曲线是一个很有价值的东西,值得动动手,养成一个经常回顾知识的好习惯,对自己应该会很有帮助的吧。