发表于: 2016-11-07 16:33:05
4 2238
一、今天完成
1.skill项目3个bug,部分脏数据初始化
2.学习了配置crontab定时任务
3.学习了nginx的location中root/alias等获取不同目录静态资源的方法
二、明天计划
1.检查李新部分的接口是否符合规范
2.完成自己部分的接口,约大魔王确认是否规范,然后约前端核对
3.计划赶不上变化
三、遇到问题
1.被拉回了bug的深渊
四、收获
1.skill项目中的linux定时任务工具crontab
查看所有定时任务 crontab -l
编辑定时任务 crontab -e
$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
前四行是有关设置cron任务运行的环境变量。SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。
文件/etc/crontab中每行任务的描述格式如下:
minute hour day month dayofweek command
minute - 从0到59的整数
hour - 从0到23的整数
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令)
root表示以root用户身份来运行
run-parts表示后面跟着的是一个文件夹,要执行的是该文件夹下的所有脚本
对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。
整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4
指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。
符号“/”指定步进设置。“/”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。
以“#”开头的为注释行,不会被执行。
2.nginx的location匹配URI方法


3.instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例
4.公司框架中有个基于hibernate+JDBC的动态拼接返回主键List的方法:
Map<String, Object> params = DynamicUtil.getXX(YY);
List<Long> ids= xxService.getIdsByDynamicCondition(XX.class, params, 0, Integer.MAX_VALUE);
因为一个线上环境bug差错,不知道获得匹配id个数应该用ids.get(0)还是ids.size(),在DBAgentHibernateImpl中发现了最终返回结果:
obj = this.hibernateTemplate.execute(new HibernateCallback() {
public Object doInHibernate(Session session) throws HibernateException, SQLException {
List list = session.createSQLQuery(sql).list();
return list.size() < 0?null:(list.size() == 1?list.get(0):list);
}
});
所以说最后应该选择ids.size()
5.公司定时更新环信token的逻辑是:
- crontab定时任务执行refreshToken.py脚本,从环信API获取新token,并更新到数据库constants表中
- 移动端(WEB端?)调用 /a/easemob/token/refresh 接口获取数据库中的token
评论