发表于: 2018-03-30 23:28:26
1 555
今日完成:
1.javajdk、maven、idea软件的下载配置
JRE(Java Runtime Enviroment)是Java的运行环境。面向Java程序的使用者,而不是开发者。如果你仅下载并安装了JRE,那么你的系统只能运行Java程序。JRE是运行Java程序所必须环境的集合,包含JVM标准实现及Java核心类库。它包括Java虚拟机、Java平台核心类和支持文件。它不包含开发工具(编译器、调试器等)。
JDK(Java Development Kit)又称J2SDK(Java2 Software Development Kit),是Java开发工具包,它提供了Java的开发环境(提供了编译器javac等工具,用于将java文件编译为class文件)和运行环境(提供了JVM和Runtime辅助包,用于解析class文件使其得到运行)。如果你下载并安装了JDK,那么你不仅可以开发Java程序,也同时拥有了运行Java程序的平台。JDK是整个Java的核心,包括了Java运行环境(JRE),一堆Java工具tools.jar和Java标准类库(rt.jar)。总结:jre是为运行Java程序提供运行环境,jdk为Java开发提供开发环境。
这个软件看的一头雾水,估计软件的功能实现要琢磨一段时间。
2.深度思考
5.为什么DB的设计中要使用Long来替换掉Date类型?
date字段有特定的字符结构,用long类型更易于读取和录入。在java也可以实现long与date类型的转换。
6.自增ID有什么坏处?什么样的场景下不使用自增ID?
MySQL要求将auto_increment属性用于作为主键的列。此外,每个表只允许有一个auto_increment列。
优点:
- 数据库自动编号,速度快,而且是增量增长,聚集型主键按顺序存放,对于检索非常有利。
- 数字型,占用空间小,易排序,在程序中传递方便。
缺点:
- 当系统与其他系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突。在多个数据库间进行数据的复制时(SQL Server的数据分发、订阅机制允许我们进行库间的数据复制操作),自动增长式字段可能造成数据合并时的主键冲突及表关联关系的丢失。
- 如果其他系统主键不是数字型,会导致修改主键数据类型,导致其他相关表的修改。
- 在数据缓冲模式下,很难预先填写主键与外键的值。
- 自增量的值都是需要在系统中维护一个全局的数据值,每次插入数据时即对此次值进行增量取值。当在产生唯一标识的并发环境中,每次的增量取值都必须为此全局值加锁解锁以保证增量的唯一性。造成并发瓶颈,降低查询性能。每创建一条记录都需要对表加一次锁,在高并发环境下开销较大。
在关系数据库需要对表格进行关联,由于很难保证一致性,不建议采用自增ID。
7.什么是DB的索引,多大的数据量下建索引会有性能的差别,什么样的情况下该对字段建索引?
索引是系统按照某个具体的算法(哈希,散列,二叉树),将目标数据从全部数据里进行提取,维护成一个索引文件,然后系统在进行数据查询的时候,发现如果查询条件刚好满足索引条件,就可以从索引文件中快速的定位的数据所在位置。
在经常需要搜索的列上,可以加快搜索的速度;
在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;
在经常用在连接的列上,这些列主要是一些外键,可以加快连接的速度;
在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;
在经常需要排序的列上创建索引,因为索引已经排序,这样查询可以利用索引的排序,加快排序查询时间;
在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。
8.唯一索引和普通索引的区别是什么,什么时候需要建唯一索引。
1.普通索引
普通索引(由关键字KEY或INDEX定义的索引)的唯一任务是加快对数据的访问速度。因此,应该只为那些最经常出现在查询条件(WHERE column = ...)或排序条件(ORDER BY column)中的数据列创建索引。只要有可能,就应该选择一个数据最整齐、最紧凑的数据列(如一个整数类型的数据列)来创建索引。
2.唯一索引
普通索引允许被索引的数据列包含重复的值。比如说,因为人有可能同名,所以同一个姓名在同一个"员工个人资料"数据表里可能出现两次或更多次。
如果能确定某个数据列将只包含彼此各不相同的值,在为这个数据列创建索引的时候就应该用关键字UNIQUE把它定义为一个唯一索引。这么做的好处:一是简化了MySQL对这个索引的管理工作,这个索引也因此而变得更有效率;二是MySQL会在有新记录插入数据表时,自动检查新记录的这个字段的值是否已经在某个记录的这个字段里出现过了;如果是,MySQL将拒绝插入那条新记录。也就是说,唯一索引可以保证数据记录的唯一性。事实上,在许多场合,人们创建唯一索引的目的往往不是为了提高访问速度,而只是为了避免数据出现重复。
9.如果对学员QQ号做了一个唯一索引,在插入数据的时候,是否需要先判断这个QQ号已经存在了?
不需要唯一索引会自动检查数据的唯一性和空值。
10.CreateAt和UpdateAt的意义分别是创建时间和修改时间,这两个时间应该在什么情况下赋值?是否应该开放给外部调用的接口?
创建表格和修改表格时。外部调用接口不太理解工作流程,如果外部接口是能够修改表格的内容,就应该开放,保证数据库文件的实时性。
11.修真类型应该是直接存储Varchar,还是应该存储int?
Varthar用来存储指定长度的定长非统一编码型的数据。int存储数值型数据,不应该。
12.varchar类型的长度怎么确定?有什么样的原则,和Text和LongText的区别是什么?
varchar可以存储的字符串最长为255个字符,使用时指定段的最大长度即可。
TEXT 最大长度是 65535 (2^16 - 1) 个字符,LONGTEXT 最大长度是 4294967295 (2^32 - 1) 个字符
2.明天计划:1.java基础学习;2.idea软件学习
3.遇到问题:无
4.今日收获:对sql索引机制有了更深的认识。
评论