发表于: 2017-10-12 22:49:35

1 624


今天完成的事情:

1.小课堂——mysql索引

(1)概念

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。
MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。
不建立索引的话,MySQL执行查询会从数据表的第一行开始查直到查询想要的数据结果。

(2)索引分类

<p>索引的分类--单列来区分</p>
<p>1.普通索引--这是最基本的索引,它没有任何限制</p>
<p>2.唯一索引--索引列的值必须唯一,但允许有空值;如果是组合索引,则列值的组合必须唯一</p>
<p>3.主键索引--列值唯一,非空,一个数据表只能有一个主键</p>

(3)数据结构

<p>索引的分类(存储结构)(InnoDB</p>
<p>B-tree</p>
<p>mysql数据库中主键、唯一、普通、全文都是采用b-tree数据结构 </p>
<p>InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,
   这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,
   因此InnoDB表数据文件本身就是主索引,InooDB必须要求主键,没有显示声明,系统会默认添加</p>
<p>除了主键索,其它都是辅助索引,辅助索引也会包含主键列,因此主键列最好不要设置太大的列值
因为是聚簇索引方式,聚簇索引的顺序就是数据的物理存储顺序,叶节点就是数据节点。主键最好是单调的。
</p>

(4)哈希索引

<p>hash索引</p>
<p>简单地说,哈希索引就是采用一定的哈希算法,把键值换算成新的哈希值,检索时不需要类似B树那样从根节点到叶子节点逐级查找,
   只需一次哈希算法即可立刻定位到相应的位置,速度非常快</p>

(5)建索引的优势

1.可以通过建立唯一索引或者主键索引,保证数据库表中每一行数据的唯一性.<br>
2.建立索引可以大大提高检索的数据,以及减少表的检索行数<br>
3.在表连接的连接条件 可以加速表与表直接的相连<br>
4.在分组和排序字句进行数据检索,可以减少查询时间中 分组 和 排序时所消耗的时间(数据库的记录会重新排序)<br/>
5.建立索引,在查询中使用索引 可以提高性能<br/>

2.学习File类基本知识

(1)

RandomAccessFile.java 文件内容的访问,读写操作类

可以随机访问文件,可以访问文件的任意位置

java文件模型

在硬盘上文件是byte 存储的,是集合

打开方式

 rw 读写

 r 只读

随机访问,存在文件指针,打开是文件指针在开头,pointer=0

写方法

raf.write(int ) ---->每次只写一个字节byte,指针指向下一个位置

(4)读取文件

int  b=raf.read() ----->读一个字节

(5)文件读写完之后要关闭

*****************************************************************

IO流 输入/输出流

字符流和字节流

1.字节流

抽象类 inputstream/ outputstream

inputstream 抽象了程序读取数据的方式

outputstream 抽象了程序写出数据的方式

2.EOF =End  读到-1就结束了

3.输入流

基本方法主要是读取,掌握

int b=in.read();读取一个字节,无符号填充到int的低8位,读到-1就EOF

in.read(byte[] buf) 读取数据填充到字节数组buf

in.read(byte[] buf,int start,int size)//读取数据到字节数组buf

从buf的start位置开始,

存放size长度的数据

4.输出流基本方法

out.write(int b) 写出一个byte到流,b的低8位 写入到流

out.write(byte[] buf)

out.write(byte[] buf,int start,int size)

5.IO流子类

对文件读操作

FileInputStrem

---------------------------------------------------------------------------------------------

编写工具类:读取文件内容,输出16进制字节码

package io;

import java.io.FileInputStream;
import java.io.IOException;

/**
* 读取指定文件内容,16进制输出字节码
*/
public class IOUtil {
//构造
   public static void printHexBybyte(String fileName) throws IOException {
//把文件当做字节流进行读取操作
       FileInputStream in=new FileInputStream(fileName);
       int b;
       int i=1;
       while((b=in.read())!=-1){
if(b<=0xf){
//单位补0
               System.out.print("0");
           }
System.out.print(Integer.toHexString(b)+"  ");
           if(i++%10==0){
System.out.println();
           }
}
in.close();}
//把文件
       public static void printHexByByteArray(String fileName)throws IOException{
FileInputStream in=new FileInputStream(fileName);
           byte[] buf=new byte[20*1024];
           //从文件中读取字节数放到buf数组中,返回的是读到的字节数
           int bytes=in.read(buf,0,buf.length);
           int j=1;
           for (int i = 0; i < bytes; i++) {
if(buf[i]<=0xf){
System.out.print("0");
               }
System.out.print(Integer.toHexString(buf[i])+" ");
               if(j++%10==0){
System.out.println();
               }
}
}
}


明天的计划:

1.继续先学习java基本知识

遇到的问题:

暂无

总结:

1.代码练习量还是不够,自己在写东西的时候总是想参考别人的代码来写。


返回列表 返回列表
评论

    分享到