java面试常用知识整理

一:Tomcat优化 2

二:集合比较 2

三:spring 2

四:sql优化 4

 


一:Tomcat优化

1. 内存优化:内存优化主要针对的是启动参数优化,可以在catalina.sh中进行设置

设置参数说明:

-Xmsjava虚拟机启动最小内存

-Xmxjava虚拟机可用最大内存

-XX:MaxPermSize: 内存最大永久保留区域

我们本地调试通常会在eclipse启动的项目中加入

-Xms512m -Xmx512m -XX:MaxNewSize=512m -XX:MaxPermSize=512m

2. 并发优化:即tomcat连接的相关参数配置,配置在server.xml

设置参数说明:

MaxThreads:客户请求最大线程数

acceptCount:监听端口队列最大数,满了之后客户请求会被拒绝

enableLookups :值为true,则支持域名解析,可把ip地址解析为主机名

connectionTimeout :连接超时时间

URIEncoding:编码格式

公司dev环境一个项目的配置如下:

port="${http.port}"

protocol="HTTP/1.1"

executor="tomcatThreadPool"

enableLookups="false"

connectionTimeout="20000"

maxThreads="1024"

disableUploadTimeout="true"

URIEncoding="UTF-8"/>

3. 缓存优化:

这里不做说明

二:集合比较

ArrayListLinkList的比较:

ArrayList注重于数据的获取,速度较快;LinkList注重于数据的插入和删除操作

原因:ArrayList是以数组的方式来实现的,而数组是通过索引的方式定位数据的位置,所以速度较快

LinkList是以链表的方式来实现list接口的,所以在modifyinsert的操作上速度更快

三:spring

1.spring提供的两种事物管理方式:编程式事物管理和声明式事物管理

1)编程式事物管理:

通过PlatformTransactionManager实现来进行事物管理

2)声明式事物管理:

a:基于txaop命名空间的xml配置文件

配置文件:

rollback-for="java.lang.Exception"/>

rollback-for="java.lang.Exception" />

rollback-for="java.lang.Exception" />

rollback-for="java.lang.Exception" />

b:基于@Transactional注解    注解的方式更常用

@Transactional(rollbackFor=Exception.class)  rollbackFor定义回滚异常类型

2.spring两大特性:控制反转,依赖注入(IOC)和面向切面编程(AOP

aIOC优点:各类之间通过注解或配置的方式注入,解耦合

方便应用维护,减少开发难度

通过@Autowired或者beanproperty属性的形式注入

bAOP优点:主要解决一些系统层面的问题,如日志,事务,权限等

增加代码的复用性

四:sql优化

1.避免使用 select *

2.避免使用子查询,尽量使用连接查询,如 left join,right join

3.exists代替innot exists代替not in,因为in会对子查询中的表进行全表扫描

4.使用索引,但是索引并不是越多越好,因为索引会占用内存

5.避免在索引列上使用not,因为会造成和索引列使用函数相同的影响,产生全表扫描

你可能感兴趣的:(java面试常用知识整理)