`
nully
  • 浏览: 9103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下七种调优经验。 1. 服务器资源     服务器所能提供CPU、内存、硬盘的性能对处理能力有决定性影响。     (1) 对于高并发情况下会有大量的运算,那么CPU的速度会直接影响到处理速度。     (2) 内存在大量数据处理的情况下,将会有较大的内存容量需求,可以用-Xmx -Xms -XX:MaxPermSize等参数对内存不同功能块进行划分。我们之前就遇到过内存分配不足,导致虚拟机一直处于full GC,从而导致处理能力严重下降。     (3) 硬盘主要问题就是读写性能 ...
1.Sonar Sonar (SonarQube)是一个开源平台,用于管理源代码的质量。Sonar 不只是一个质量数据报告工具,更是代码质量管理平台。支持的语言包括:Java、PHP、C#、C、Cobol、PL/SQL、Flex 等。 2.Findbugs Findbugs是一个静态分析工具,它检查类或者JAR 文件,将字节码与一组缺陷模式进行对比以发现可能的问题。Findbugs自带检测器,其中有60余种Bad practice,80余种Correctness,1种 Internationalization,12种Malicious code vulnerability,27种Multith ...
防止重复提交表单的方式 表单重复提交是在web开发中经常遇到的问题,顾名思义就是指同一个表单用户有意或无意的提交了两次,轻则引起系统数据出现重复,重则引起系统业务逻辑异常,导致系统数据错乱。 一、引起表单重复提交有以下几种常见场景: 1.重复点击提交按钮。包括恶意的连续点击提交按钮,或因为网络慢、服务器处理速度慢等引起的用户多次点击。 2.表单提交处理完后,通过浏览器的后退按钮回到原页面再次点击提交按钮。 3.通过点击浏览器的刷新按钮,导致表单重复提交 4.通过浏览器的历史记录,获取表单提交的URL地址,再次访问 二、解决方式 1.JS脚本方式 JS脚本方式只能限制场景一的多次点击,且须和服 ...
策略模式又叫算法模式,是指将独立的算法进行封装,并可以动态决定使用哪个算法类来改变对象的行为。 结构图: 使用场景: 1.有不同的逻辑来处理,可以抽象出独立的算法类,算法类之间公平且唯一。 2.通过策略模式可以松耦合维护算法族。 使用实例: 1. TreeSet和TreeMap,通过构造函数参数Comparable来实现算法的注入。
解释器模式,给定一个语言,定义一个该文法的表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 使用场景: 1.算术表达式、正则表达式

中介者模式

中介者模式是指用一个中介对象来封装一系列对象的交互,中介者对象使对象间不需要显示引用,使其达到松耦合。 结构图: 适用场景: 1.多个对象之间相互关联交互,形成类似网状结构
访问者模式,是在不影响对象结构的情况下,提供对对象内部对象的访问方法。适用于对象的类机构复杂且基本固定,但是内部算法变动较多。 结构图
备忘录模式Memento,也要快照模式。在不影响封装性的前提下,通过在外部将对象的内部状态进行捕获并存储起来,在适当的时候可以进行还原。 发起人提供备份和还原的方法,但是由外部对象维护备份的状态。 结构图: 适用场景: 1.需要维护对象的内部状态,如UNDO、REDO操作

责任链模式

责任链模式是一种对象的行为模式。在责任链中,一个责任链中的节点包含对下一个责任链链的关联,一个请求从一个节点传到下一个节点直到结束。发出请求的客户端不知道请求会由那个责任链节点来处理。系统中的责任链处理可以进行动态的调整和分配。 使用场景: 1.存在多级的处理,并且由哪一级来处理可以动态进行调整,且下一级节点也可以动态调整。 使用实例: 1.Servlet中的Filter 、 Struts2中的Filter 2.类似OA项目中的请假流程等
State状态模式,是指在对象内部的状态改变后,对象的行为也跟着产生变化。 使用状态模式将特定状态相关的逻辑分散到一些类的状态类中。 使用场景: 1.一个对象的行为取决于对象的状态,并且在运行期动态变化。 2.一个操作中含有多个分支结构,且分支结构决定于对象的状态。 状态模式的结构图:
享元模式,就是在系统中如果存在多个相同的对象,那么只需要保存一份共享的对象就可以。Java中String类、数据库连接池、线程池等就是运用享元模式。 享元模式中常用工厂模式来维护一个内部对象共享池,如果已经存在于共享池,则从共享池中取出发回,如不存在则新增一个到共享池并返回。 享元模式结构图
命令模式,是指将来自客户端的请求封装成一个对象,允许系统使用不同的请求把客户端参数化,对请求进行排队或记录日志,并可以提供命令的撤销和重做功能。 命令模式,顾名思义来理解即可,就是客户端发布一个命令(也就是“请求”),而这个命令是已经被封装成一个对象的。即这个命令对象的内部可能已经指定了该命令具体被谁负责执行。 命令模式的结构 使用场景: 1.该请求较为复杂,或者可能被重复调用 2.调用前后需对参数进行特殊处理 3.调用前后进行特殊处理,如记录日志、排队等 4.请求潜在扩展可能性强 优点: 1.松耦合,将客户端与实现命令的对象进行送耦合 2.动态控制,通过参数化封装,可以进行动态控制 ...
Facade模式,即门面模式或外观模式,通过在系统中增加一层门面模式来降低客户端系统访问子系统的复杂性。 GOF《设计模式》中定义:为子系统中的一组接口提供一个统一接口。Facade模式定义了一个更高层的接口,使子系统使用更加容易。 Facade模式的优点: 封装子系统间的操作,通过统一的封装代码实现客户端系统与子系统的松耦合,降低客户端系统使用的复杂性。 缺点: 增加子系统时,可能需要修改Facade层代码和客户端实现代码。
所谓单例模式,就是指一个类只能实现一个实例,并且提供方法访问获取该实例。单例模式有几种常见的实现方式。 1.简单模式,没有实现延迟加载 public class Singleton{ private Singleton(){} private Singleton instance = new Singleton(); public static Singleton getInstance(){ return instance; } } 2.内部静态类方式 public class Singleton ...

maven小技巧

1.在项目使用maven进行构建时,对于在本地上的jar包没有上传到maven库中,常用的办法是放到webapp/WEB-INF/lib目录下,但是在最后进行项目打包时就会报错,可以通过以下配置解决: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.5.1</version> <configu ...
Global site tag (gtag.js) - Google Analytics