Jvm调优:
1.调内存
(1)调堆内存大小
-Xms设置堆的最小空间大小。
-Xmx设置堆的最大空间大小。
-XX:NewSize设置新生代最小空间大小。
-XX:MaxNewSize设置新生代最大空间大小。
-Xss:设置每个线程的堆栈大小。
(2)调方法区内存大小
-XX:MetaspaceSize 设置元数据区最小空间。 (JDK8)
-XX:MaxMetaspaceSize 设置元数据区最大空间。(JDK8)
jsp:查看进程端口号
jconsole分析:内存的大小
内存分析工具:
Memory Analyzer Tool(MAT)是一个强大的基于的内存分析工具,可以帮助我们找到内存泄露,减少内存消耗。
jmap -dump:format=b,file=D:\temp\07.hprof 进程号
2.调GC算法
串行算法、并行回收算法(cms)
tomcat优化:
1.内存优化
Windows平台下在bin目录下的catalina.bat文件中,找到@echo off然后再它的下面一行添加如下类似语句。
SET CATALINA_OPTS= -Xms512m -Xmx512m -Xmn125m
参数说明:
-server:一定要作为第一个参数,在多个CPU时性能佳
-Xms:java Heap初始大小。 默认是物理内存的1/64。
-Xmx:java heap最大值。建议均设为物理内存的一半。不可超过物理内存。
-Xmn:young generation(年轻代)的heap大小。一般为Xmx的3、4分之一
-XX:MetaspaceSize=128m 初始元空间大小,默认一般为21m。
-XX:MaxMetaspaceSize=256m 最大元空间大小,默认无上限,由OS内存决定
2.网络优化
默认使用http1.1
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"
redirectPort="8443" />
优化使用nio2
<Connector port="8080" protocol="org.apache.coyote.http11.
Http11Nio2Protocol"connectionTimeout="20000" redirectPort="8443" />
3.线程池优化
<Connector port="8080" protocol="org.apache.coyote.http11.
Http11Nio2Protocol" connectionTimeout="20000"redirectPort="8443" maxThreads="10" />
数据库优化:
1.查询语句优化:首先我们可以用EXPLAIN或DESCRIBE(简写:DESC)命令分析一条查询语句的执行信息.
2.优化子查询:在MySQL中,尽量使用JOIN来代替子查询.因为子查询需要嵌套查询,嵌套查询时会建立一张临时表,临时表的建立和删除都会有较大的系统开销,而连接查询不会创建临时表,因此效率比嵌套子查询高.
3.使用索引
4.分解表:
5.使用中间表:对于将大量连接查询的表可以创建中间表,从而减少在查询时造成的连接耗时.
6.增加冗余字段:类似于创建中间表,增加冗余也是为了减少连接查询.
硬优化:
(1)优化三大硬件
1.配置多核和频率高的cpu,多核可以执行多个线程. 2.配置大内存,提高内存,即可提高缓存区容量,因此能减少磁盘I/O时间,从而提高响应速度. 3.配置高速磁盘或合理分布磁盘:高速磁盘提高I/O,分布磁盘能提高并行操作的能力.
(2)优化数据库参数
1.key_buffer_size:索引缓冲区大小
2.table_cache:能同时打开表的个数
3.query_cache_size和query_cache_type:前者是查询缓冲区大小,后者是前面参数的开关,0表示不使用缓冲区,1表示使用缓冲区,但可以在查询中使用SQL_NO_CACHE表示不要使用缓冲区,2表示在查询中明确指出使用缓冲区才用缓冲区,即SQL_CACHE.
4.sort_buffer_size:排序缓冲区
(3)分库分表
(4)缓存集群
设计模式:
创建型模式:
简单工厂模式:创建对象时降低耦合(DefaultAopProxyFactory)
单例设计模式:饿汉式单例设计模式 懒汉式单例设计模式
建造者设计模式:解决问题:将创建对象的代码分离出来
解决方案:*builder(SqlSessionFactoryBuilder)
结构型模式:
适配器模式 (Adapter):解决问题:一个类或接口不适合别人使用
解决方案:增加一个适配器类(HandlerInterceptor)
责任链设计模式:解决问题:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
解决方案:接口,实现类,chain(InterceptorChain)
观察者设计模式:解决问题:上一层(ui层)下一层(db层),db中的数据发生变化,ui应该知道,更新界面,目标(db)发生变化,观察者(ui)应该知道。
解决方法:Interface Observer Class 观察者implement Observer
目标{List<Observer> 发生变化For (list){通知观察者}}
装饰设计模式:解决问题:类功能不够, 解决方法:增加新类
案例: inputStream ,ObjectInputStream(inputStream)
代理设计模式:解决问题:目标代码写好,增加扩展功能
解决方法:增加代理,代理中实现扩展功能,代理再去调用目标代码
Bootstrap是基于HTML、CSS、JavaScript 开发的简洁、直观、强悍的前端开发框架,使得 Web 开发更加快捷。 提供了优雅的HTML和CSS规范,能制作响应式网页。
Idea(编辑工具) svn(项目整合) vue(前端框架)