Mysql-引号对索引的影响

在进行查询操作时,如果对于字符型字段进行where查询不加引号时不会走索引

Mysql-存储过程生成测试数据

在进行查询操作的性能测试时,往往需要测试大数据量模式下的查询功能的性能
MySQL表数据量的大小,也会影响索引的选择

Mysql-key_len的计算

当用Explain查看SQL的执行计划时,里面有列显示了 key_len 的值,根据这个值可以判断索引的长度,在组合索引里面可以更清楚的了解到了哪部分字段使用到了索引

设计模式-责任链模式

责任链通常需要先建立一个单向链表,然后调用方只需要调用头部节点就可以了,后面会自动流转下去。比如流程审批就是一个很好的例子,只要终端用户提交申请,根据申请的内容信息,自动建立一条责任链,然后就可以开始流转了

设计模式-适配器模式

适配器模式跟代理模式写法上类似。适配器模式做的就是,有一个接口需要实现,但是我们现成的对象都不满足,需要加一层适配器来进行适配。分为对象适配器模式、类适配器模式

设计模式-代理模式

代理模式就是不直接对外提供其实现类,而是提供其代理类,隐藏实现类的细节,通常还用于在真实的实现的前后添加一部分逻辑

Spring-Spring Quartz和Task的区别

目前比较常用的定时任务解决方案一般就是Spring Quartz和Task

spring-quartz

spring-quartz只是spring对quartz的一个包装而已。其实现是在spring-context-support中

  1. 特点
  • 默认多线程异步执行
  • 单个任务时,在上一个调度未完成时,下一个调度时间到时,会另起一个线程开始新的调度。业务繁忙时,一个任务会有多个调度,可能导致数据处理异常
  • 多个任务时,任务之间没有直接影响,多任务执行的快慢取决于CPU的性能

多线程-ThreadPoolExecutor用法

属性

1
2
3
4
5
6
7
int corePoolSize;//核心线程数,默认情况下核心线程会一直存活,即使处于闲置状态也不会受存keepAliveTime限制。除非将allowCoreThreadTimeOut设置为true
int maximumPoolSize//线程池所能容纳的最大线程数。超过这个数的线程将被阻塞。当任务队列为没有设置大小的LinkedBlockingDeque时,这个值无效
long keepAliveTime//非核心线程的闲置超时时间,超过这个时间就会被回收
TimeUnit unit//指定keepAliveTime的单位
BlockingQueue<Runnable> workQueue//线程池中的任务队列,常用的是:ArrayBlockingQueue、LinkedBlockingQueue、SynchronousQueue
ThreadFactory threadFactory//线程工厂,提供创建新线程的功能
RejectedExecutionHandler handler//拒绝策略,线程池线程数达到最大值并且任务队列满时触发

Mysql-按小时统计数据

Mysql统计一天中每小时数据量sql如下

1
2
3
4
5
6
7
select created, count(created)
from (
select DATE_FORMAT( created ,'%Y-%m-%d %H') created
from shop_check_result
where created > '2018-10-08 00:00:00' and created < '2018-10-09 00:00:00'
) a
group by created;

Java基础-内部类中调用外部局部变量为何用final修饰

在平时写代码中经常会在方法中起一个线程,但是在局部内部类中使用外部局部变量的话编译器会提示将外部局部变量定义为final类型,这是为什么呢

1
2
3
4
5
6
7
8
9
10
11
12
13
public void test(final String a, String b){
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ":"+a);
}
}).start();
}

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×