jvm/tomcat/数据库调优和常用设计模式

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(前端框架)

发布了15 篇原创文章 · 获赞 0 · 访问量 272

猜你喜欢

转载自blog.csdn.net/weixin_45146962/article/details/105261523