发表于: 2017-11-21 19:18:05
0 610
今天做的事:
新知识
大小写不敏感,SMTP协议,如何避免大小写敏感以及如何实现大小写敏感。mysql的排序规则
今天才知道,一个互联网常识:邮箱不分大小写。。。
这个涉及到一些邮件服务提供商的约定等,不展开了,起源是笑然说的数据库大小写敏感问题。
如果唯一索引,使用默认的排序规则,是有大小写敏感问题的——utf8_general_ci
当然可以使用另一种大小写不敏感的排序规则避免——utf8_bin
然后还有笑然之前的报错问题,原因是Spring配置文件头的Servlet版本的问题,没有细研究,只不过他的版本问题导致无法使用Ctrl+左键跳转,从Servlet2.3-2.4-2.5-3.0以上等
然后今天主要是做定时刷新AccessToken,所以写了几个demo,都是定时有关的。
首先是线程定时:
public class ThreadUtil implements Runnable{
public AccessToken accessToken = new AccessToken();
public void run(){
while(true){
try{
for(int i = 0; i < 100; i++) {
System.out.println("==========> come on");
accessToken.setAccess_token("aaaaa" + i);
accessToken.setExpires_in("200" + i);
System.out.println(accessToken.getAccess_token());
System.out.println(accessToken.getExpires_in());
Thread.sleep(5*1000);
}
}catch (InterruptedException e){
e.printStackTrace();
}
}
}
}
主要原理就是线程休眠,然后再次请求。
启动线程需要用一个
new Thread(new ThreadUtil()).start();
来启动
然后是java自带的定时器,Timer类
public class TimerUtil extends TimerTask{
private String abc;
@Override
public void run(){
for(int i = 0; i < 2; i++){
abc = "" + i;
System.out.println("abc = " + abc);
}
System.out.println("end");
}
}
测试启动需要
Timer timer = new Timer();
//Timer定时器,第一个参数delay是延迟时间,第二个参数period是时间间隔
timer.schedule(new TimerUtil(),1000,2000);
紧接着是使用Spring的quartz做定时
定时内容
public class quartzUtil{
public void test(){
System.out.println("start? " + System.currentTimeMillis());
}
}
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
">
<bean id="business" class="util.quartzUtil"/>
<!--初始化调度任务-->
<bean name="simpleTrigger" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<!--调度的类-->
<property name="targetObject" ref="business"/>
<!--调度的方法-->
<property name="targetMethod" value="test"/>
</bean>
<!--触发器-->
<bean id="cronTriggerTest" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<!--指向的任务-->
<property name="jobDetail" ref="simpleTrigger"/>
<!--时间定时-->
<!--参数依次为秒,分,时,日,月;还有其他参数,具体查阅资料-->
<property name="cronExpression" value="0/5 * * * * ?"/>
</bean>
<!--总调度器-->
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<!--触发器列表-->
<ref bean="cronTriggerTest"/>
</list>
</property>
</bean>
</beans>
引用的jar包依赖
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.3.0</version>
</dependency>
开始用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.9.RELEASE</version>
</dependency>
jar包没有
org.springframework.scheduling.quartz
这个路径,可能是Spring版本问题,后来加上就好了
当然配置文件这种,只有在web容器启动的时候,quartz的定时任务才会启动,而且要设置好参数。
然后就是整合到项目里,把之前微信的内容。
结果新加了一个表,以及接口和实现类,还有一些工具类什么的,没用代码生成,纯靠自己推测,然后成功了,我也挺佩服我自己,但是感觉还是备受折磨,心态随时爆炸。
本来今天打算把用户接口一起写了的,时间有点来不及了,明天再补吧。
明天计划:把用户登陆接口写了;和前端调一下微信这些接口是否可用。
问题:这几天心态真的有问题,感觉随时都会爆炸,被折磨的太久,真的难受。
收获:终于把定时这块了解了个大概。
评论