java笔记高级部分
你有没有用过linux?你都用它来做什么?
Linux是一个长时间运行比较稳定的操作系统,我们一般用它来当做服务器。
说一下linux下面的一些常用的命令?
Pwd 获取当前路径
Cd 跳转到目录
Su - u 切换到管理员
Ls-ls 列举目录
你是使用什么来连接远程的Linux服务器的?
使用xshell、putty等ssh客户端来连接服务器,使用xftp、winscp等sftp客户端来上传和现在文件。连接和上传、下载必须依赖于服务器的ssh、sftp服务,也就是linux服务器需要启动这两个服务。
有没有使用过云主机?
没有使用过,但是有所了解。
云主机就是远程的服务器功能,开发者或者企业只需按需付费就可以租用对应的服务器。
有没有做过数据库优化方面的事情?
做过mysql数据库的优化、其他数据库类似
定位:查找、定位慢查询
查找慢查询并定位慢查询?
在项目自验项目转测试之前,在启动mysql数据库时开启慢查询,并且把执行慢的语句写到日志中,在运行一定时间后。通过查看日志找到慢查询语句。
数据库优化之遵循范式?
第一范式:列不可再分,确保每一列的原子性。
第二范式:属性完全依赖于主键。
第三范式:属性不依赖于其他非主属性
选择合适的存储引擎
myisam / innodb/ memory
问 MyISAM 和 INNODB的区别(主要)
1. 事务安全 myisam不支持事务而innodb支持
2. 查询和添加速度 myisam不用支持事务就不用考虑同步锁,查找和添加和添加的速度快
3. 支持全文索引 myisam支持innodb不支持
4. 锁机制 myisam支持表锁而innodb支持行锁(事务)
5. 外键 MyISAM 不支持外键, INNODB支持外键. (通常不设置外键,通常是在程序中保证数据的一致)
数据库优化之创建合适的索引?
索引(Index)是帮助DBMS高效获取数据的数据结构。
分类:普通索引/唯一索引/主键索引/全文索引
索引使用小技巧?
具体技巧:
1. 对于创建的多列索引(复合索引),不是使用的第一部分就不会使用索引。
2. 对于使用like的查询,查询如果是’%aaa’不会使用到索引而‘aaa%’会使用到索引。
3. 要求使用的所有字段,都必须单独使用时能使用索引.
4. 如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。
5. 如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
索引弊端
1.占用磁盘空间。
2.对dml(插入、修改、删除)操作有影响,变慢。
使用场景:
a: 肯定在where条件经常使用,如果不做查询就没有意义
b: 该字段的内容不是唯一的几个值(sex)
c: 字段内容不是频繁变化.
数据库优化之分表?
分表分为水平(按行)分表和垂直(按列)分表
数据库优化之读写分离
数据库最终会把数据持久化到磁盘,如果集群必须确保每个数据库服务器的数据是一直的。能改变数据库数据的操作都往主数据库去写,而其他的数据库从主数据库上同步数据。
数据库优化之缓存
在持久层(dao)和数据库(db)之间添加一个缓存层,如果用户访问的数据已经缓存起来时,在用户访问时直接从缓存中获取,不用访问数据库。而缓存是在操作内存级,访问速度快。
作用:减少数据库服务器压力,减少访问时间。
Java中常用的缓存有,
1、hibernate的二级缓存。
2.可以使用redis来作为中央缓存。
jdbc批量插入几百万数据怎么实现?
1、变多次提交为一次
2、使用批量操作
有没有使用过redis? Redis是什么
key-value的nosql数据库
主要用来做缓存数据库的数据和web集群时当做中央缓存存放seesion