一:Tomcat优化
1. 内存优化:内存优化主要针对的是启动参数优化,可以在catalina.sh中进行设置
设置参数说明:
-Xms:java虚拟机启动最小内存
-Xmx:java虚拟机可用最大内存
-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. 缓存优化:
这里不做说明
二:集合比较
ArrayList和LinkList的比较:
ArrayList注重于数据的获取,速度较快;而LinkList注重于数据的插入和删除操作
原因:ArrayList是以数组的方式来实现的,而数组是通过索引的方式定位数据的位置,所以速度较快
LinkList是以链表的方式来实现list接口的,所以在modify和insert的操作上速度更快
三: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:基于tx和aop命名空间的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)
(a)IOC优点:各类之间通过注解或配置的方式注入,解耦合
方便应用维护,减少开发难度
通过@Autowired或者bean中property属性的形式注入
(b)AOP优点:主要解决一些系统层面的问题,如日志,事务,权限等
增加代码的复用性
四:sql优化
1.避免使用 select *
2.避免使用子查询,尽量使用连接查询,如 left join,right join等
3.用exists代替in,not exists代替not in,因为in会对子查询中的表进行全表扫描
4.使用索引,但是索引并不是越多越好,因为索引会占用内存
5.避免在索引列上使用not,因为会造成和索引列使用函数相同的影响,产生全表扫描