发表于: 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的定时任务才会启动,而且要设置好参数。


然后就是整合到项目里,把之前微信的内容。

结果新加了一个表,以及接口和实现类,还有一些工具类什么的,没用代码生成,纯靠自己推测,然后成功了,我也挺佩服我自己,但是感觉还是备受折磨,心态随时爆炸。


本来今天打算把用户接口一起写了的,时间有点来不及了,明天再补吧。



明天计划:把用户登陆接口写了;和前端调一下微信这些接口是否可用。


问题:这几天心态真的有问题,感觉随时都会爆炸,被折磨的太久,真的难受。


收获:终于把定时这块了解了个大概。




返回列表 返回列表
评论

    分享到