java基础知识点
1 泛型
(1)泛型仅仅是java的语法糖,它不会影响java虚拟机生成的汇编代码,在编译阶段,虚拟机就会把泛型的类型擦除,还原成没有泛型的代码,不影响执行速度。
2 git操作
(1)基于远程分支新建分支,新建后是在本地的,需要push到远程
3 oracle相关
(1)oracle的按组分组并排序函数(分析函数):
partition b:可选,每个分区内的行会从1开始编号。
select row_number() over(partition by 分组列 ORDER BY G.VERSION_NO desc) from BANCS_GLCP_HIST G;
(2)查出来的clob数据库字段类型,mybatis使用string来返回 resultType=“string”
4 异常
Throwable包括:
Error包括:
线程死锁、虚拟机错误
Exception包括:
编译时异常:IOException、SQLException、FileNotFoundException
运行时异常:
5 数组
(1)数组的equals方法,继承自Object类,没有重写equals方法,实际上2个数组比较值:还是比较的地址 比较2个数组的每个元素是否相同:Arrays.equals()
(2)数组的长度是固定的,及时删除元素,它整个所占用的空间还是不变的
6 父子类加载
父子类存在继承关系
(1)子类创建对象初始化顺序
顺序:父类静态变量(父类静态代码块)=== 子类静态变量(子类静态代码块) = 父类非静态方法(变量)= 父类构造代码块 = 子类非静态变量(方法) = 子类构造代码块
(2)
7 objcet类方法
(1)clone
(2)wait
(3)notify
(4)finalize (垃圾收集器)
8 mysql优化
优化成本:硬件 > 系统配置 > 数据库表结构 > sql及索引
优化效果:硬件 < 系统配置 < 数据库表结构 < sql及索引
日志级别
error > warn > info > debug
高优先级日志级别,无法展示低优先级的日志
throws
throws可抛出运行时异常和编译时异常
@JsonProperty
2个对象有好多相同属性,进行转换赋值
数据库的聚合函数
表后面有where或者group by字段才可以(一个就行)
import引入
import java.util.*
# 只能引入util中的类,不能引入下面子目录中的类
java报错信息堆栈顺序
(1)一般最上面是报错的异常信息
(2)上面的是最底层深处的的调用(错误发生的直接代码信息)
(3)下面的是最外层(如controller的调用 行数)
hashMap底层、方法
数组 链表 红黑树
(1)put(key,value)
(2)containsKey(key)
(3)get(key,value)
(4)remove(key) 移除
(5)keySet() set(key)
(6)values 值的Collection
(7)entrySet()
set collection集合
(1)add
(2)contains
(3)remove
(4)toArray
for循环的几种形式
(1)for i++这种
(2)foreach for(e1:each)
(3)集合的stream.forEach方法
消息中间件 rabbitmq
(1)队列的好处
不影响响应请求给客户端,不会阻塞
(2)消息在mq中能存活多长时间
默认是永不过期,可指定声明ttl队列(可作用于整个队列/单个消息队列)
3 其他
(1)计算机的1字节=8位(bit) 8字节=64位
(2)上版项目服务的启停顺序问题:一般是后停止服务 启动:先启动服务
(3)mybatis查询返回是Map的话: key都是大写的
(4)switch case语句中,case没有break的话,会从一开始找到的地方往下穿透 default也会穿透
(5)接口interface中的public static final 修饰常量都是可以省略的
(6)Collections是java.util下的类,包含有各种有关集合操作的静态方法
(7)线程通过使用synchronized关键字可获得对象的互斥锁定(和继承Thread或实现Runnable接口无关)
(8)如果是GBK,一个中文字符占2个字节;如果是UTF-8,那么一个中文字符占3个字节