文章目录
一、集合
1.数组和集合的区别
- 数组的效率高于集合类
- 数组能存放
基本类型和对象
,而集合类中只能存放对象
- 数组长度不可变,集合长度可变
- 集合以类的形式存在,具有封装、继承、多态等类的特性,通过简单的方法和属性调用即可实现各种复杂操作,大大提高软件的开发效率
2.List、Set、Map的区别
Java提供的众多集合类由两大接口衍生而来:
Collection接口
和Map接口
List和Set
实现了Collection接口
HashMap和TreeMap
实现了Map接口
List:
1.可以允许重复的对象。
2.可以插入多个null元素。
3.是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序。
4.常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的随意访问
Set:
无序 元素不可重复
Map:
以Key-Value形式存储。Key可以不重复 Value可重复
二、Vue
1.Vue常用的组件有哪些
axios
使用axios实现前后端数据交互easyUI
轻松的打造出功能丰富并且美观的UI界面xlsx
实现前端解析xlsx文件内容vue-json-excel
将后台的json数据导出excel表格
三、数据库
1、多表查询
- 左连接(左外连接)
作用:在内连接的基础之上,保全左表的全部数据,右边没有的数据用NULL替代。
格式:select 列名 from 左表 left join 右表 on 从表.外键=主表.主键
SELECT * FROM emp e LEFT JOIN dept d ON e.`dept_id` = d.`id`
- 右连接(右外连接)
作用:在内连接的基础之上,保全右表的全部数据,左边没有的数据用NULL替代。
格式:select 列名 from 左表 right join 右表 on 从表.外键=主表.主键
SELECT * FROM emp e RIGHT JOIN dept d ON e.`dept_id` = d.`id`
- 子查询 (一般而言在一个查询中,可以嵌套另一个查询. 子查询是一个完整的的SELECT语句)
-- a.子查询是单行单列的情况 原理:实际上就是子查询出来的结果是一个值,外部sql可以使用:= > >= < <= != ...
-- 查询工资大于5000的员工的部门名称
SELECT NAME FROM dept WHERE id IN (SELECT dept_id FROM emp WHERE salary > 5000)
-- b.子查询: 多行单列的情况 原理:实际上就是子查询的结果是多个值,可以当数组使用 外部查询可以使用 IN / ANY / ALL
SELECT * FROM emp WHERE salary > (SELECT MAX(salary) FROM emp WHERE dept_id = 1)
-- c.多行多列的情况原理:子查询出来的结果实际上就是一个新表,可以继续当虚拟表使用
SELECT e.* , d.name 部门名称 FROM (SELECT * FROM emp WHERE join_date >= '2011-01-01') e
LEFT JOIN dept d ON e.dept_id = d.id;
2、事务
什么是事务
MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!
事务的特性
事务是必须满足4个条件(ACID)::原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)。
- 原子性:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
- 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作。
- 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,
隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
事务隔离分为不同级别,包括读未提交(Read uncommitted)
、读提交(read committed)
、可重复读(repeatable read)
和串行化(Serializable)
。 - 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
四、框架
1、SpringBoot常用的注解
@SpringBootApplication:
包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加入到程序上下文。
@Configuration
等同于spring的XML配置文件;使用Java代码可以检查类型安全。@EnableAutoConfiguration
自动配置。@ComponentScan
组件扫描,可自动发现和装配一些Bean。
@Controller:
注解在类上,表示这是一个控制层bean@Service:
注解在类上,表示这是一个业务层bean@Value:
注解在变量上,从配置文件中读取。@RequestMapping:
作用就是映射URL路径,将http的请求地址映射到控制器(controller)类的处理方法上@Responsebody:
一般在异步获取数据时使用,将java对象转为json格式的数据@CrossOrigin():
解决跨域问题@PostMapping:
处理post请求
2、SpringBoot的优点(习惯优于配置)
独立运行
内嵌各种Servlet容器,Tomcat、Jetty等,只要打成一个Jar包就能独立运行(部署)
简化配置
spring- boot-start-web
启动器自动依赖其他组件,减少了maven的配置
自动配置
SpringBoot能根据当前类路径下的类、jar包自动配置Bean
应用监控
SpringBoot提供一系列端点可以监控服务及应用
3、Spring的两大特性
IOC 控制反转
AOP 面向切面编程
五、Java基础
1、抽象类和接口的区别是什么
概念不同
抽象类:这个对象是什么 比如 它是一只动物 可以是狗,也可以是猫
接口:这个对象可以做什么 比如 狗会叫,猫也会叫
成员不同
抽象类:有构造方法,用于子类实例化使用
成员变量可以是变量,也可以是常量
成员方法可以是抽象的,也可以是非抽象的
`
接口: 没有构造方法
成员变量只能是常量,默认修饰符:public static final
接口中的所有方法都是抽象的
继承关系
抽象类只能单继承,接口可以多继承
2、解释一下static关键词
- 修饰成员变量和成员方法:被static修饰的变量和方法是属于类的,而不属于某一个对象,使用
类名.静态变量名
、类名.静态方法名()
即可使用,而无需重新new一个对象。所有实例共用一个变量。 - 静态代码块:静态代码块定义在类中方法外,静态代码块在非静态代码块之前执行。
- 静态方法中不能使用this关键字,因为静态方法不属于任何一个实例。
3、线程池
- 什么是线程池?
线程池其实就是将多个对象放到一个容器当中。 - 为什么使用线程池?
可以重用线程,减少创建和销毁线程带来的消耗 - 如何使用线程池
线程池的种类
1.ThreadPoolExecutor:
线程池的真正实现方法
2.FixedThreadPool:
一种固定线程数量的线程池
3.CahcehThreadPool:
一种线程数量不定的线程池
4.SingleThreadExecutor:
一种只有一个工作线程的线程池
5.ScheduledThreadPool:
核心线程数量固定,非核心线程数不固定的线程池
4、数据传输格式
1.JSON:
一种轻量级文本数据交换格式(易于阅读编写)
2.XML:
可扩展标记语言(读取XML文档)
3.YAML:
电脑可识别的数据序列化格式(解析成本低)
5、Ajax
-
Ajax原理
AJAX指的是异步的JavaScript及XML(Asynchronous JavaScript And XML),是一种创建快速动态的技术,通过在后台与服务器进行少量的数据交互,实现页面的异步更新,在不重新加载整个页面的情况下做到页面的部分刷新。 -
Ajax使用步骤
创建 XMLHttpRequest 对象(XHR)
1.用户从UI
发送请求,JavaScript
中调用XMLHttpRequest
对象。
2.HTTP
请求由XMLHttpRequest
对象发送到服务器。
3.服务器使用JSP
,PHP
,Servlet
,ASP.net 等与数据库交互。
4.检索数据。
5.服务器将XML 数据
或JSON 数据
发送到XMLHttpRequest
回调函数。
6.HTML
和CSS
数据显示在浏览器上。
六、liunx
1、常用命令
查看日志
-n 是显示行号;相当于nl命令
tail 查看前多少行 比如 tail -n 100 test.log 查询日志尾部最后100行的日志;
head 查看日志文件的头多少行 比如 head -n 10 test.log 查询日志文件中的头10行日志;
cat根据关键字查询日志的所在行 比如 cat -n test.log |grep “debug” 查询关键字的日志(常用!~)