java面试常用知识整理


一: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环境一个项目的配置如下:

<Connector acceptCount="800"

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实现来进行事物管理

<!--配置事务管理的模板-->

<bean id="transactionTemplate" class="org.springframework.transaction.support.TransactionTemplate">

<property name="transactionManager" ref="transactionManager"></property>

<!--定义事务隔离级别,-1表示使用数据库默认级别-->

<property name="isolationLevelName" value="ISOLATION_DEFAULT"></property>

<property name="propagationBehaviorName" value="PROPAGATION_REQUIRED"></property>

</bean>

2)声明式事物管理:

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

配置文件:

<aop:config>

<aop:pointcut id="pc" expression="execution(* com.fh.service..*(..))" />

<aop:advisor pointcut-ref="pc" advice-ref="txAdvice" />

</aop:config>

<tx:advice id="txAdvice" transaction-manager="transactionManager">

<tx:attributes>

<tx:method name="delete*" propagation="REQUIRED" read-only="false"

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

<tx:method name="insert*" propagation="REQUIRED" read-only="false"

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

<tx:method name="update*" propagation="REQUIRED" read-only="false"

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

<tx:method name="save*" propagation="REQUIRED" read-only="false"

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

</tx:attributes>

</tx:advice>

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

<tx:annotation-driven transaction-manager="transactionManager" />

@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,因为会造成和索引列使用函数相同的影响,产生全表扫描

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值