发表于: 2018-02-06 23:02:19
1 672
今日完成
1. 数据库索引
什么是数据库索引:索引是一种数据结构 ,存储表中一个特定列的值数据结构。
数据库怎么使用索引:当运行某个查询语句时,比如:SELECT * FROM Employee WHERE Employee_Name = ‘张三’;数据库会检查在查询的列上是否有索引,假如这一列上有索引,数据库会检查使用这个索引是否合理,然后再决定是否使用;;
数据库索引的缺点:
1) 索引会占用空间 - 你的表越大,索引占用的空间越大。
2) 性能损失(主要值更新操作),当你在表中添加、删除或者更新行数据的时候, 在索引中也会有相同的操作。
下面是有索引和无索引时执行查询语句的运行效率,数据库表格中数据量为220W条。
2. 学习多线程基础;
下午听了师兄对多线程的讲解,但是之前我自身只是对多线程的概念进行了了解。所以下来后对多线程进行学习;
多进程是指操作系统能同时运行多个任务(程序)。
1)并发和并行
并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。
并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。
2)进程和线程
进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。
一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行。
线程是进程中的执行流程,一个流程中可以包含多个线程,每个线程可以具有多个并发执行的线程。
实现线程的两种方式:
1)继承Thread类;
public class Threadtest1 extends Thread {
public void run(){//重写run方法
System.out.println("线程");
}
public static void main(String[] args) {
//实例化对象
Threadtest1 a1=new Threadtest1();
Threadtest1 a2=new Threadtest1() ;
//调用start方法启动线程
a1.start();
a2.start();
}
}
2)实现Runnable接口;
public class Runnabletest1 implements Runnable {
private int i=10;
//重新run方法
@Override
public void run() {
i=i-1;
System.out.println(i);
}
public static void main(String[] args) {
Runnabletest1 A1=new Runnabletest1();
Thread a1=new Thread(A1);
Thread a2=new Thread(A1);
Thread a3=new Thread(A1);
a1.start();
a2.start();
a3.start();
}
}
3. 学习内存分配
在前面线上学习时,对内存分配有过学习,但不够深入。今天重新补上;
栈:保存在函数中定义的一些基本类型和变量数据和对象的引用变量;
堆:存放用new产生的对象和数组
常量池:JVM为每个已加载的类型维护一个常量池,常量池就是这个类型用到的常量的一个有序集合。常量池存在于堆中。
静态域:存放在对象中用static定义的静态成员
明天计划
1.学习多线程;
2.学习内存分配
遇到问题
------------
收获
初步学习了多线程和内存分配
评论