- 浏览: 3561 次
最新评论
文章列表
引起慢查询的原因:
1.向数据库请求了不需要的数据
2.mysql是否在扫描额外的记录
优化步骤:
1.开启慢查询日志,找出慢SQL语句
2.通过explain查询和分析查询计划
一、SQL语句优化
具体优化:
Count,关联查询,group by,limit
count:
统计列时不统计NULL,count(*)统计行数;
count需要扫描大量的行才能获得精确结果,mysql层面只有索引覆盖扫描。如果不够,需要修改架构,也可以添加汇总表或memcached这样的缓存系统。“快速,精确和简单”。三者只能满足其二
关联查询:
从子查询到关联查询需要用distinct去重;
确保on ...
Java的类加载器都有哪些?
启动(Bootstrap)类加载器:负责将 <Java_Runtime_Home>/lib下面的核心类库或-Xbootclasspath选项指定的jar包加载到内存中.无法直接获取到启动类加载器的引用.
扩展(Extension)类加载器:它负责将< Java_Runtim ...
JVM体系结构
class --- 类加载系统 --- 方法区,堆内存,java栈,pc寄存器,本地方法区 --- GC,JIT compiler
Java堆内存
在运行时,Java的实例被存放在堆内存区域。当一个对象不再被引用时,满足条件就会从堆内存移除。在垃圾回收进程 ...
多线程基础概念
- 博客分类:
- concurrent
Java 内存模型中的可见性、原子性和有序性。
可见性 :
是指线程之间的可见性,一个线程修改的状态对另一个线程是可见的。
在 Java 中 volatile、synchronized 和 final 实现可见性。
原子性:
原子是世界上的最小单位,具有不可分 ...
Java 并发包概述
- 博客分类:
- concurrent
并发编程经常需要用到的,包含了一些可以拓展的轻量级框架
Executors
接口:Executor 提供了一个任务提交,执行的异步多线程处理框架,包括线程池,异步I/O,轻量级异步框架。 ExecutorService 提供了一个更加完整的异步任务执行 ...
why
中介隔离作用
开闭原则,增加功能
比如,玩游戏,可以找代练
how
public interface Subject {
//业务操作
public void doSomething(String str);
}
public class RealSubject implements Subject {
//业务操作
public void doSomething(String str) {
System.out.println("do something!---->" + str);
}
}
public class MyInvocationHa ...
why
建造模式的重心在于分离构建算法和具体的构造实现,从而使得构建算法可以重用。具体的构造实现可以很方便地扩展和切换,从而可以灵活地组合来构造出不同的产品对象
what
将一个复杂对象的构建与它的表示分
离,使 ...
what
定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中。
使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
why
(1) 在父类中形式化地定义一个算法,而由它的子类来实现细节的处理,在子类实现详细的处理算法时并不会改变算法中步骤的执行次序。
(2) 模板方法模式是一种代码复用技术,它在类库设计中尤为重要,它提取了类库中的公共行为,将公共行为放在父类中,而通过其子类来实现不同的行为,它鼓励我们恰当使用继承来实现代码复用。
(3) 可实现一种反向控制结构,通过子类覆盖父类的钩子方法来决定某一特定步骤是否需要执行。
(4) 在模板方法模式中可以通过子类来覆盖父 ...
优点:
将对象的创建统一起来便于维护和整体把控,
开闭原则:对扩展开放,对修改封闭
缺点:
使用限制:工厂模式需要类实现它的接口并且在业务内部存在明显的继承关系
缺点:耦合性提高,由于工厂类集中了所有实例的创建逻辑,违反了高内聚责任分配原则,将全部创建逻辑集中到了一个工厂类中,这种对条件的判断和对具体产品类型的判断交错在一起,很难避免模块功能的蔓延,对系统的维护和扩展非常不利。
可以通过高度层次化和模块化来提高系统的开闭性,而不必生硬地去套用工厂模式
示例代码:
interface Car {
void drive();
}
class Benz implements Car ...
why:
静态:类只有一个共同的实例。
单例:类只需要维护一份实例和非静态方法;这样,维护的非静态方法可以使用面向对象的多态,继承
一般使用场景:要求生成唯一序列号;创建对象消耗资源过多,只允许创建一个对象,比如线程池对象
what:
一个类只有一个实例,并且自行实例化,向整个系统提供这个实例
how:
public class Singleton {
private static class SingletonHolder {
private static final Singleton INSTANCE = new Singleton();//利用cla ...